- Регистрация
- 14 Авг 2019
- Сообщения
- 11
- Лучшие ответы
- 0
- Репутация
- 0
Компилятор ошибки не выдает но | типо когда аккаунт уже в базе данных, я захожу снова что бы авторизоваться и когда я введу пароль и нажму далее то у меня выскакивает окно с Ввод Email, а если ничего не введу то ввобще ввод пароля, как исправить эту фигню что бы авторизация норм работала
PHP:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DLG_REG:
{
if(response)
{
if(!strlen(inputtext))
{
ShowRegistration(playerid);
}
if(strlen(inputtext) < 8 || strlen(inputtext) > 20)
{
ShowRegistration(playerid);
}
new regex:rg_passwordcheck = regex_new("^[a-zA-Z0-9]{1,}$");
if(regex_check(inputtext, rg_passwordcheck))
{
new salt[11];
for(new i; i <10; i++)
{
salt[i] = random(79) + 47;
}
salt[10] = 0;
SHA256_PassHash(inputtext, salt, player_info[playerid][PASSWORD], 65);
strmid(PN[playerid][SALT], salt, 0, 11, 11);
//printf("%s", PN[playerid][SALT]);
//strmid(player_info[playerid][PASSWORD], inputtext, 0, strlen(inputtext), 20);
SPD(playerid, DLG_REGEMAIL, DSI, "{cdeb1f}Регистрация {FFFFFF}| Ввод E-mail",
"{FFFFFF}Введите ваш E-mail адрес\nЕсли вы потеряете доступ к аккаунту, то с помощью e-mail вы сможете восстановить его",
"{FFFFFF}Далее", "");
}
else
{
ShowRegistration(playerid);
regex_delete(rg_passwordcheck);
}
}
else
{
SCM(playerid, COLOR_WHITE, "Для выхода из игры используйте: '/q(uit)'");
SPD(playerid, -1, 0, " ", " ", " ", "");
return Kick(playerid);
}
}
case DLG_REGEMAIL:
{
if(!strlen(inputtext))
{
SPD(playerid, DLG_REGEMAIL, DSI, "{cdeb1f}Регистрация {FFFFFF}| Ввод E-mail",
"{FFFFFF}Введите ваш E-mail адрес\nЕсли вы потеряете доступ к аккаунту, то с помощью e-mail вы сможете восстановить его",
"{FFFFFF}Далее", "");
}
new regex:rg_emailcheck = regex_new("^([-A-Za-z0-9_]+\\.)*[-A-Za-z0-9_]+@([A-Za-z0-9][-A-Za-z0-9]*\\.)+[A-Za-z]{2,6}$");
if(regex_check(inputtext, rg_emailcheck))
{
strmid(player_info[playerid][EMAIL], inputtext, 0, strlen(inputtext), 64);
SPD(playerid, DLG_REGSEX, DIALOG_STYLE_MSGBOX, "{cdeb1f}Регистрация {FFFFFF}| Выбор пола", "{FFFFFF}Выберите пол вашего персонажа", "Мужской", "Женский");
}
else
{
SPD(playerid, DLG_REGEMAIL, DSI, "{cdeb1f}Регистрация {FFFFFF}| Ввод E-mail",
"{FFFFFF}Введите ваш E-mail адрес\nЕсли вы потеряете доступ к аккаунту, то с помощью e-mail вы сможете восстановить его",
"{FFFFFF}Далее", "");
}
regex_delete(rg_emailcheck);
}
case DLG_REGSEX:
{
if(response)
{
PN[playerid][SEX] = 1;
new RandomM = random(sizeof(gRandomM));
SetPlayerSkin(playerid,gRandomM[RandomM]);
PN[playerid][SKIN] = gRandomM[RandomM];
}
else
{
PN[playerid][SEX] = 2;
new RandomF = random(sizeof(gRandomF));
SetPlayerSkin(playerid,gRandomF[RandomF]);
PN[playerid][SKIN] = gRandomF[RandomF];
}
SpawnPlayer(playerid);
TogglePlayerSpectating(playerid, 0);
SCM(playerid, COLOR_WHITE, "Регистрация завершена");
new Year, Month, Day;
getdate(Year, Month, Day);
new date[12];
format(date, sizeof(date), "%02d.%02d.%d", Day, Month, Year);
new ip[16];
GetPlayerIp(playerid, ip, sizeof(ip));
static const fmt_query[] = "INSERT INTO `users` (`name`,`password`, `salt`, `email`, `sex`, `skin`, `regdata`, `regip`) VALUES ('%s', '%s', '%s', '%s', '%d', '%d', '%s', '%s')";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+64)+(-2+10)+(-2+64)+(-2+8)+(-2+1)+(-2+3)+(-2+12)+(-2+15)];
format(query, sizeof(query), fmt_query, PN[playerid][NAME], PN[playerid][PASSWORD], PN[playerid][SALT], PN[playerid][EMAIL], PN[playerid][SEX], PN[playerid][SKIN], date, ip);
mysql_query(dbHandle, query);
static const fmt_query2[] = "SELECT * FROM `users` WHERE `name` = '%s' AND `password` = '%s'";
format(query, sizeof(query), fmt_query2, PN[playerid][NAME], PN[playerid][PASSWORD]);
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
SetPVarInt(playerid, "Logged", 1);
}
case DLG_LOG:
{
if(response)
{
new checkpass[65];
SHA256_PassHash(inputtext, PN[playerid][SALT], checkpass, 65);
printf("%s\n%s", checkpass, PN[playerid][SALT]);
if(strcmp(PN[playerid][PASSWORD], checkpass))
{
SCM(playerid, COLOR_WHITE, "Пароль верный");
SetPVarInt(playerid, "Logged", 1);
SpawnPlayer(playerid);
}
else
{
SCM(playerid, COLOR_WHITE, "Пароль неверен");
ShowLogin(playerid);
}
}
else
{
SCM(playerid, COLOR_WHITE, "Для выхода из игры используйте: '/q(uit)'");
SPD(playerid, -1, 0, " ", " ", " ", "");
return Kick(playerid);
}
}
}
return 1;
}
Последнее редактирование модератором: