• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Проблема с регистрацией!

Статус
В этой теме нельзя размещать новые ответы.

John Powell

Начинающий
Пользователь
Регистрация
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;
}
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу