password_verify()的问题

时间:2015-02-28 14:31:48

标签: php

所以我是php的新手。 我有一个伪表和pwd表的数据库,密码用password_hash加密。 这是我在我的数据库中发送新用户的方式:

<?php
$options = [
'cost' => 8,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];

$pwd = password_hash($pwd, PASSWORD_BCRYPT, $options);

$insert_query = "insert into user values ('$pseudo','$pwd','$mail')";

$mysqli->query($insert_query);

它正在工作,然后当我想以数据库中的用户身份登录时,我在表格中搜索与伪i写相关的密码,一旦我有了密码我就用它来中午加密密码(我通过POST得到的那个)

$options = [
'cost' => 8,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];

$pwd2 = password_hash($pwd, PASSWORD_BCRYPT, $options);

$sql_log = "select mdp from user where pseudo ='$pseudo'";

$mysqli->multi_query($sql_log);

if($res = $mysqli->use_result()) {

    while($row = $res->fetch_row()) {
        echo $row[0]."<br/>";   
    }
    $res->close();
    echo $pwd2."<br/>";
    echo $pwd."<br/>";

    if(password_verify($pwd,$row[0])) {
        $mysqli->close();
        $_SESSION['pseudo'] = $pseudo;

        die("<script>location.href = 'homepage.php'</script>");
    }
    else 
        echo "putin";
}

但是它不起作用,我已经阅读了有关它的其他主题,但没有任何帮助我。

1 个答案:

答案 0 :(得分:1)

好的,我发现了我的问题,我不知道这对别人是否有用,或者我是否可以理解,但我真的很蠢。

while($row = $res->fetch_row()) {
    echo $row[0]."<br/>";   
}
$res->close();
echo $pwd2."<br/>";
echo $pwd."<br/>";

if(password_verify($pwd,$row[0])) {
    $mysqli->close();
    $_SESSION['pseudo'] = $pseudo;

    die("<script>location.href = 'homepage.php'</script>");
}

我在while中创建了一行,当我检查他的值时,它返回0,所以我在password_verify中传递的第二个参数为null ...

TY