php - password_verify 不返回任何东西
问题描述
当我运行下面的代码时,password_verify 没有返回任何内容。我尝试回显以查看返回的内容,但没有打印任何内容。
我也回应了存储的密码,以确保这不是问题,也不是。我回应了用户输入,这似乎也可以正常工作。
我使用的密码之一是 grayson,散列后是 $2y$10$iK5pADTskgcfo6KRnBXs3e/0LkclrsZb3DSo1bmLubLqd.aaIdnK2
<?php
$loginEmail = $_POST['loginEmail'];
$loginPassword = $_POST['loginPassword'];
$link = mysqli_connect("localhost", "cjramire_wrdp1", 'password', "username");
$query = "SELECT * FROM `Users` WHERE email = '".mysqli_real_escape_string($link, $loginEmail)."'";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result);
echo $row['password'];
echo $loginPassword;
$verify = password_verify($loginPassword, $row['password']);
echo $verify;
if($verify){
echo "Its a match";
}else{
echo "nope";
}
让我知道是否有任何其他信息有帮助,谢谢!
下面我添加了用于将信息推送到数据库中的代码,因为您可以看到 pws 在推送到数据库之前已经过哈希处理。
$signUpEmail = $_POST['signUpEmail'];
$signUpPassword = $POST['signUpPassword'];
$hash = password_hash($signUpPassword,PASSWORD_DEFAULT);
$link = mysqli_connect("localhost", "cjramire_wrdp1", 'password', "username");
$query = "INSERT INTO `Users` (`email`, `password`) VALUES('$signUpEmail', '$hash')";
mysqli_query($link, $query);
解决方案
根据 php.net, 的第二个参数password_verify()
必须是
由 password_hash() 创建的哈希。
取自php.net
您的第二个参数似乎是 SQL 查询的结果,因此如果您不将密码存储为由 创建的哈希password_hash()
,password_verify()
将无法按预期工作。
推荐阅读
- javascript - 如何将第一个元素与确切内容匹配?
- node.js - 如何从 React.js 中的用户 id 获取用户名
- docusignapi - AnchorTabString 无法正常工作
- css - Chrome (Windows) 中潜在的 CSS Scroll Snap 错误。两个例子,只有一个作品。为什么?
- python - Python yahoo Finance 错误 market_cap=int(data.get_quote_yahoo(str)['marketCap']) TypeError: 'int' object is not callable
- javascript - 使用 node.js 处理内容类型 application/json 的服务器响应
- javascript - Firebase 远程配置(角度)
- python-3.x - 包装一个 io.BufferedIOBase 使其变得可搜索
- postgresql - 使用只读副本升级 RDS Postgres 实例的正确程序?
- c++ - 如何停止命令缓冲区之间的清除?