Перейти к содержанию
Авторизация  
Ryslik42

Проблема с проверкой.

Рекомендуемые сообщения

Ryslik42

Проблема в том, что почему то неправильно срабатывает проверка на введенное значение со значением записанным в БД.
Все время выдает что "Ошибка! Вы ввели неверный дополнительный защитный пароль", хотя ввожу все верно.
В БД все записывается правильно, проверял несколько раз. 
Даже пробовал копировать значение в БД и вставлял в диалог, все ровно та же беда.

 

Сам диалог с проверкой

case 17:
{
        if(response)
        {
                new doppass = strval(inputtext);
                if(PlayerInfo[playerid][pPassword2] != doppass) return ShowPlayerDialog(playerid,17,DIALOG_STYLE_PASSWORD,"Дополнительный пароль","Ошибка! Вы ввели неверный дополнительный защитный пароль.\n\t\tПовторите попытку еще раз.","Ввод","Отмена"); //вот это проверка косячит 
                SCM(playerid, COLOR_YELLOW, "Вы успешно авторизовались!");
                gPlayerLogged[playerid] = 1;
                SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
                SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
                SpawnPlayer(playerid);
        }
        else
        {
                SCM(playerid, 0xFF6347AA, "Вы отказались от авторизации, для выхода используйте {ffffff}(/q)");
                Kick(playerid);
        }
}

Загрузка

stock LoadAccount(playerid, password[])
{
	new query[128],sqlpass[32],result[230], mani;
	mysql_real_escape_string(password, sqlpass);
	format(query, sizeof(query), "SELECT * FROM `players` WHERE `Password` = '%s' AND `ID` = '%i'", sqlpass, PlayerInfo[playerid][ID]);
	mysql_query(query);//отправляем запрос
	mysql_store_result();//просмотр результата
	if(mysql_num_rows() == 1)
	{
		mysql_fetch_row_format(result, "|");
		sscanf(result, "p<|>is[24]s[32]s[32]iiiiiiiif",
		PlayerInfo[playerid][ID], PlayerInfo[playerid][pName], PlayerInfo[playerid][pPassword], PlayerInfo[playerid][pPassword2],PlayerInfo[playerid][pPass], PlayerInfo[playerid][pLevel],
		PlayerInfo[playerid][pExp], PlayerInfo[playerid][pLocal], PlayerInfo[playerid][pTuts], PlayerInfo[playerid][pSex],
		PlayerInfo[playerid][pTeam], mani, PlayerInfo[playerid][pHealth]);
		GiveMoney(playerid, mani);
		mysql_free_result();
		if(PlayerInfo[playerid][pPass] == 1) return ShowPlayerDialog(playerid,17,DIALOG_STYLE_INPUT,"Дополнительный пароль","\t\tВнимание! Ваш аккаунт защищен дополнительным паролем.\nВведите в окно ваш дополнительный защитный пароль, который вы вводили при его установке.","Ввод","Отмена");
		gPlayerLogged[playerid] = 1;
		SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
		SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
		SpawnPlayer(playerid);
		return 1;
	}
	else
	{
	//другой код
	}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Max_Eitzen

При загрузке pPassword2 - стринг, а в проверке получается числовое значение из inputtext.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SHOROOP

@Max_Eitzen, да дело даже не совсем в этом, а в общем непонимании работы подобной системы.

Если Password2 - строка, то, во-первых, строки грубо сравнивать нельзя (strcmp() в помощь), а во-вторых, strval() использовать нет никакого резона - она вернет именно конвертированное в интовое число значение. Если Password2 - число, то почему sscanf'ом его парсите как строку?

 

Если нужен совсем грубый костыль - то сравнение видоизменяйте:

 

if(strval(PlayerInfo[playerid][pPassword2]) != doppass)

Если Password2 все-таки число, то в sscanf'е модификатор типа меняйте.

Если Password2 - строка, выбрасывайте strval(inputtext) и сравнивайте две строки с помощью strcmp().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
st1vka

Интересует вопрос, зачем вообще использовать R5, когда есть R7+ версии, которые в разы проще в использовании.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.