首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPass返回错误

PHPass返回错误
EN

Stack Overflow用户
提问于 2013-12-28 02:35:57
回答 1查看 96关注 0票数 0

在我的函数文件中,我有以下代码:

代码语言:javascript
复制
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文件),我有这样的代码:

代码语言:javascript
复制
$pass = password("Vlad");
if(password("Vlad", $pass)){
    echo 11;
}else{
    echo 22;
}

它返回22。为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2013-12-28 02:50:44

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

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

代码语言:javascript
复制
$_POST["$dbpassword"]

代码语言:javascript
复制
$_GET["$dbpassword"]

我怀疑表单中表单域的名称是不断变化的,所以这就解释了为什么函数在您第二次调用它时总是返回false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20805967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档