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;
        }
    }
}

在另一个文件(包含函数和 PHPASS php 文件)中,我有以下代码:

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

它返回 22。为什么?

当您使用第二个未NULL变量调用 password 函数时,它将返回 false,除非您在调用页面时设置了 POSTGET变量。

POSTGET变量的名称必须是您第一次使用函数时哈希的密码的密码哈希

$_POST["$dbpassword"]

$_GET["$dbpassword"]

我怀疑表单中表单字段的名称是否在不断变化,因此这可以解释为什么该函数总是在您第二次调用它时返回false

最新更新