当前位置: 首页 > 知识库问答 >
问题:

密码\u在php中验证显示错误结果[重复]

上官鸿朗
2023-03-14

我已经将sha512密码保存到DB,我正在尝试一个简单的登录屏幕来检查密码。我总是得到一个密码错误的错误。

我重复了结果,所有文本都显示正确。我不确定这里会出什么问题?

守则的结果:

Actual qwerty123!

48a2d06f950fe0bece5ea4749e9db40e2ea17e6353476331839e967b0b7fbd9e4b6c999177e708385f09aca4c7d79884d9b472f4b39d901fffbd5677a9ed26f7 512

48a2d06f950fe0bece5ea4749e9db40e2ea17e6353476331839e967b0b7fbd9e4b6c999177e708385f09aca4c7d79884d9b472f4b39d901fffbd5677a9ed26f7 inside while

48a2d06f950fe0bece5ea4749e9db40e2ea17e6353476331839e967b0b7fbd9e4b6c999177e708385f09aca4c7d79884d9b472f4b39d901fffbd5677a9ed26f7 db

48a2d06f950fe0bece5ea4749e9db40e2ea17e6353476331839e967b0b7fbd9e4b6c999177e708385f09aca4c7d79884d9b472f4b39d901fffbd5677a9ed26f7 Wrong
<?php
session_start();
ob_start();
require('db/config.php');

 $password = "qwerty123!";
 
 echo "Actual " . $password;
 
 echo "</br>";
 echo "</br>";
 
 $password = hash('sha512', $password);
 
 echo $password . " 512";
 
 echo "</br>";
 echo "</br>";
 
 $username = "admin";
 
 $query = "SELECT * FROM userdetails WHERE username = '$username'";  
 $result = mysqli_query($conn, $query);  
 if(mysqli_num_rows($result) > 0)  
 {  
    while($row = mysqli_fetch_array($result))  
    { 
        echo $password . " inside while";
        echo "</br>";
        echo "</br>";
        echo $row["password"] . " db ";
        echo "</br>";
        echo "</br>";
        
      if(password_verify($row["password"], $password))
      {
        echo $row["password"] .  " Correct ";
      }
      else
      {
          echo $row["password"] .  " Wrong ";
      }
    }
 }

?>

共有1个答案

温成济
2023-03-14

您正在将$password更改为哈希:$password=hash('sha512',$password)

password\u verify-验证密码是否与哈希匹配

password\u验证(字符串$password,字符串$hash):bool

您应该将密码传递给该函数,而不是散列。

删除此行并重试:$password=hash('sha512',$password)

编辑:同时反转传递和散列的顺序:

password\u验证($password,$row[“password”])

 类似资料:
  • 在我的登录PHP文件中,我有这些 在我的注册PHP文件中,我有这个。 现在,基本上我使它哈希密码,并插入自己的数据库注册。确实如此。 然而,它无法核实。这两个结果给出了两个不同的哈希,我不知道我可能做错了什么。我也试着让它再次散列输入并检查数据库中的password_hash,但那不起作用... 正确的使用方法是什么? (另外,$passSign和$userInput是输入字段,它确实获取用户名/

  • 当我尝试执行代码时,我收到一个无效的密码错误。我想提及的是,我也在使用相同的密码功能进行注册。但是,当我在登录代码中实现它时,我并没有获得成功。请告诉我我做错了什么,并帮助我修复错误。 另一件事是,我输入的密码与注册演示用户时使用的密码相同/正确。这是登录的代码。

  • 因此,很明显,它识别出输入的名称太短,但我在视图中没有得到任何错误消息,正如这里所预期的:。

  • 有一张Zend登记表。输入用户名、电子邮件、密码和确认密码。电子邮件验证程序如下所示: 有4个验证器:必需类型、电子邮件格式以及数据库中是否有人具有以下电子邮件。错误消息如下:-需要电子邮件-电子邮件地址格式无效-电子邮件地址已存在 尝试使用ajax捕获错误消息和输出时出现问题。在具有以下功能的RegisterController中: 和jQuery文件: 在控制台我得到了这样的东西https:/

  • 问题内容: 非常奇怪的错误。我使用的是http://developers.facebook.com/docs/authentication/。所以我创建了对fb的请求并传递redirect_uri。我在本地主机上使用测试站点。所以如果我通过 redirect_uri = http://localhost/test_blog/index.php 它工作正常,但如果我通过 redirect_uri =

  • @将有效的打印信息发送到控制台,但不发送到页面 当我的字段有错误@Valid print info到控制台时,为什么不在第页? 字段hotelName上的对象formData中的字段错误:拒绝的值[];代码[Size.formData.hotelName, Size.hotelName, Size.java.lang.String, size];参数[org.springframework.con