首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - password_verify问题

PHP - password_verify问题
EN

Stack Overflow用户
提问于 2013-11-10 15:13:23
回答 1查看 3.1K关注 0票数 5

我已经在这上面挠了两个多小时了。我研究过关于堆栈溢出的文章,包括:

我还没能纠正我的问题。我希望得到一些关于我是多么愚蠢的人的指导:

函数将数据插入到MySQL数据库:

代码语言:javascript
复制
function insertUser($userObj) {
    $query = $this->databaseConnection->getStntPrepare()->prepare(
            "INSERT INTO user(username, userpassword) VALUES (?,?);");
    $username = $userObj->getUsername();
    $password = password_hash('testing1234', PASSWORD_BCRYPT);

    $query->bind_param('ss', $username, $password);
}

通过从MySQL:检索数据验证用户登录

代码语言:javascript
复制
function findUser($userObj) {
    $query = $this->databaseConnection->getStntPrepare()->prepare(
            "SELECT userid, userpassword 
                FROM user 
                WHERE username=?");

    $pass = 'testing1234'
    $query->bind_param('s', $userObj->getUsername());
    $query->execute();
    $query->bind_result($userid, $hash);

    while ($query->fetch()) {

        if (password_verify($pass, $hash)) {
            echo 'Password is valid!';
        } else {
            echo 'Invalid password.';
        }
    }
}

运行时,我得到“无效密码”。

当我在没有插入数据库的情况下执行以下操作时,然后检索:

代码语言:javascript
复制
$hash = password_hash('testing1234', PASSWORD_BCRYPT);
if (password_verify('testing1234', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

我知道密码是有效的!

我认为,我的问题与密码字段中的单引号和双引号以及美元符号($)的解释有关,在从MySQL数据库存储/检索时,这是一个变量而不是文字(正如文章中所建议的那样)--但是我还没有找到解决办法。下面是‘the 1234’的散列值:

$2y$10$1/oQEuYX67n.U3usxH.7tenNq7hT2dKyBSIZsy5xR3W

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-10 15:42:09

问题在于数据库--与password_verify或password_hash无关。Datatype的字符数最多(仅定义为40个,正如MySQL在创建表时所做的那样)。移到了60,不再有问题了。

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

https://stackoverflow.com/questions/19891355

复制
相关文章

相似问题

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