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

Не работает проверка на пароль при авторизации персонажа

Amaro

Новичок
В общем, регистрируюсь, все хорошо, сервер хэширует пароль и вносит в базу.
Когда авторизоваться пытаюсь, постоянно пароль верный, но ввожу абсолютно разные.
Авторизация:
Код:
                new checkpass[65];
                SHA256_PassHash(inputtext, PlayerInfo[playerid][SALT], checkpass, 65);
                if(strcmp(PlayerInfo[playerid][PASSWORD], checkpass, false, 64) == 0)
                {
                    SCM(playerid, COLOR_RED, "ВЕРЕН УРААА!");
                }
                else
                {
                    new string[47];
                    if(GetPVarInt(playerid, "WrongPassword") > 0)
                    {
                        format(string, sizeof(string), "Ошибка — {FFFFFF}Пароль неверный. Осталось %d попыток", GetPVarInt(playerid, "WrongPassword"));
                    }
                    if(GetPVarInt(playerid, "WrongPassword") == 0)
                    {
                        SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Вы исчерпали лимит попыток входа.");
                        Kick(playerid);
                    }
                    ShowLogin(playerid);
                }
Регистрация:
Код:
            {
                if(!strlen(inputtext))
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Введите пароль для продолжения.");
                }
                if(!(8 <= strlen(inputtext) <= 32))
                {
                    ShowRegistration(playerid);
                    return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Пароль должен состоять от 8-ми до 32-ух символов.");
                }
                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, PlayerInfo[playerid][PASSWORD], 65);
                    strmid(PlayerInfo[playerid][SALT], salt, 0, 11, 11);
                    SPD(playerid, DLG_REGEMAIL, DIALOG_STYLE_INPUT, ""SERVER"Электронная почта",
                    "Введите вашу настоящую электронную почту\n\
                     В случае утери вашего аккаунта, вы сможете восстановить его",
                    "Далее", "");
                }
                else
                {
                    ShowRegistration(playerid);
                    regex_delete(rg_passwordcheck);
                    return SCM(playerid, COLOR_RED, "Ошибка — {FFFFFF}Пароль должен состоять из [a-z] [A-Z] [0-9]");
                }
Если не перезапускать сервер - пишет пароль неверный во всех случаях
Если перезапускать сервер - верный во всех случаях
 
Сверху Снизу