Php 我能';似乎无法使密码\u verify()生效
在将密码存储到数据库之前,我对其进行哈希运算。当我想要取回它并与用户输入进行比较时,我总是得到“密码不匹配”。我尝试了很多修复方法,但似乎没有任何效果。可能是我的语法有问题,我不擅长phpPhp 我能';似乎无法使密码\u verify()生效,php,sql,Php,Sql,在将密码存储到数据库之前,我对其进行哈希运算。当我想要取回它并与用户输入进行比较时,我总是得到“密码不匹配”。我尝试了很多修复方法,但似乎没有任何效果。可能是我的语法有问题,我不擅长php if (mysqli_num_rows($result) > 0) { // output data of each row while($row = mysqli_fetch_assoc($result)) { if (password_verify($Registe
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";
}
散列密码
$hassedPassword = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);
我不太关心安全问题,因为这只是一个项目。我只需要让它工作
编辑
我在“复制”中更改了while循环,但它仍然不起作用。你知道为什么吗
$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";
}
所以它现在起作用了
登录代码:
$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)
似乎可以做到这一点,但我必须删除所有记录并注册新用户。这似乎也起到了作用。数据库表中密码字段的数据类型和长度是什么?$RegisteredPass
来自哪里?您确定密码正确存储在数据库中吗?对于“正确存储”,我的意思是密码字段是一个VARCHAR(255)
如果您对安全性不感兴趣,为什么要将成本
值从默认值10增加到我不太关心安全性,因为它只是用于一个项目。我只需要让它发挥作用。
你应该因为这种态度而被记下来。这意味着,当安全性成为一个问题时,你会试图走捷径,或者陷入一些问题,如果不是这样的话,你可以在问题变得至关重要之前通过学习正确的方法来解决这些问题。