Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我能';似乎无法使密码\u verify()生效_Php_Sql - Fatal编程技术网

Php 我能';似乎无法使密码\u verify()生效

Php 我能';似乎无法使密码\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

在将密码存储到数据库之前,我对其进行哈希运算。当我想要取回它并与用户输入进行比较时,我总是得到“密码不匹配”。我尝试了很多修复方法,但似乎没有任何效果。可能是我的语法有问题,我不擅长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";
}
散列密码

$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增加到
我不太关心安全性,因为它只是用于一个项目。我只需要让它发挥作用。
你应该因为这种态度而被记下来。这意味着,当安全性成为一个问题时,你会试图走捷径,或者陷入一些问题,如果不是这样的话,你可以在问题变得至关重要之前通过学习正确的方法来解决这些问题。