password_verify()返回false

时间:2016-01-21 06:23:46

标签: php magento passwords magento-1.7 php-password-hash

我有一个看似自发的问题。突然,我的password_verify()函数返回false。

<?php
$email = $_POST['email'];
$password = $_POST['password'];
$sql1 =
    "SELECT `merchants_id`, `password`, `name` FROM table_name WHERE `email` = :email;";
$binds = array(
    'email' => $email
);

$findvalue = Mage::getSingleton('core/resource')->getConnection('core_read')->fetchAll($sql1, $binds);
$findvalue = $findvalue[0];

$verified = password_verify($password, $findvalue['password']);
?>

您可能会看到,我正在使用Magento(完全修补1.7)及其执行查询的方法。

如果我通过password_get_info($findvalue['password'])解析它,它会选择密码有效并输出预期数据(加密类型等),但$verified会返回FALSE

数据库字段已设置并始终设置为varchar(255)

修改---

这是用于创建密码的代码:

    $hash = password_hash($value['password'], PASSWORD_BCRYPT);
    $updateSql = 'UPDATE table_name SET `password` = :password WHERE `merchants_id` = :merchant_id;';
    $updateBinds = array(
        'password' => $hash,
        'merchant_id' => $value['merchants_id']
    );
    $cxn->query($updateSql, $updateBinds);

此外,根据此处的要求,还有一个密码字符串:$2y$10$TfTULzD9eVUEdjaquhcUmOhGD07X5VV3MloCpjaOmpt3GqOBpEhmm

1 个答案:

答案 0 :(得分:0)

我重置了密码,一切正常。

我怀疑这可能是因为我将PHP版本升级到5.6意味着算法可能已经改变。