[英]I can't seem to make password_verify() work
I hash password before it is store into DB.在将密码存储到数据库之前,我会对其进行哈希处理。 When I want to get it back and compare with user input I always get "password does not match".
当我想取回它并与用户输入进行比较时,我总是得到“密码不匹配”。 I tried a lot of fixes but nothing seems to work.
我尝试了很多修复,但似乎没有任何效果。 May be the problem is with my syntax, I am not good with php.
可能是我的语法有问题,我不擅长 php。
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
if (password_verify($RegisteredPass, $row['pass']))
{
echo "tchd";
echo "ID:".$row['id'] ."|Name:".$row['name']. "|User:".$row['user'];
}
else{
echo "pass doesn`t match";
}
}
} else {
echo "user not found";
}
Hashing password哈希密码
$hassedPassword = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);
I am not very concern about security, because it is just for a project.我不是很关心安全性,因为它只是一个项目。 I just need to make it work.
我只需要让它工作。
I changed while loop as was in "duplicate", but it still does not work.我像“重复”中那样更改了 while 循环,但它仍然不起作用。 Any ideas why?
任何想法为什么?
$sql = "SELECT pass, id, name, user FROM unityTut WHERE user='".$RegisterUser."'";
$result = $conn->query($sql);
if ($result->num_rows === 1) {
$row = $result->fetch_array(MYSQLI_ASSOC);
if (password_verify($RegisteredPass, $row['pass'])) {
//Password matches, so create the session
echo "Match";
}else{
echo "The username or password do not match";
}
So it works now!所以它现在起作用了!
Code for login:登录代码:
$sql = "SELECT pass, id, name, user FROM unityTut WHERE user='".$RegisterUser."'";
$result = $conn->query($sql);
if ($result->num_rows === 1) {
$row = $result->fetch_array(MYSQLI_ASSOC);
if (password_verify($RegisteredPass, $row['pass'])) {
echo "Match";
}else{
echo "The username or password do not match";
}
// ...
VARCHAR(255)
Seems to do the trick, but I had to delete all records and register new user. VARCHAR(255)
似乎可以解决问题,但我必须删除所有记录并注册新用户。 That seems to do the trick too.这似乎也能解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.