PHPass возвращает ошибку

В моем файле функций у меня есть этот код:

function password($password, $dbpassword = false){
    if($dbpassword){
        $password = mysqli_real_escape_string($GLOBALS["mysqli"], $_POST["$dbpassword"]);
        if(empty($password))
            $password = mysqli_real_escape_string($GLOBALS["mysqli"], $_GET["$dbpassword"]);
            if(empty($password))
                return false;
    }
    $hasher = new PasswordHash(8, false);
    if (strlen($password) > 72)
        return false;
    else{
        if($dbpassword){
            $check = $hasher->CheckPassword($password, $dbpassword);
            if ($check)
                return true;
            else
                return false;
        }else{
            $hash = $hasher->HashPassword($password);
            if (strlen($hash) >= 20) 
                return $hash;
            else
                return false;
        }
    }
}

и в другом файле (с включением в функции и PHP-файл PHPASS) у меня есть этот код:

$pass = password("Vlad");
if(password("Vlad", $pass)){
    echo 11;
}else{
    echo 22;
}

Возвращает 22. Почему это?

1 ответ

Когда вы звоните password функция со второй переменной, которая не NULL, он вернется false если только POST или же GET переменная устанавливается при вызове вашей страницы.

Название этого POST или же GET переменная должна быть хэшем пароля пароля, который вы хэшировали в первый раз, когда вы использовали свою функцию, когда используете:

$_POST["$dbpassword"]

или же

$_GET["$dbpassword"]

Я сомневаюсь, что имя поля формы в вашей форме постоянно меняется, что объясняет, почему функция всегда возвращает false во второй раз ты это называешь.

Другие вопросы по тегам