所以我是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";
}
但是它不起作用,我已经阅读了有关它的其他主题,但没有任何帮助我。
答案 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