【发布时间】:2015-01-05 15:34:11
【问题描述】:
这几天我一直在尝试编写一个简单的登录。在我认为我让它工作之后,我意识到它会接受密码字段中的任何输入为真实,所以我放弃它并重新开始。我正在尝试使用 php 函数 password_verify 进行验证,但无论我做什么,它始终返回 true。有什么我做错了吗?这是我的代码(我知道它不安全,我现在只想让它识别错误的密码)
if(isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);
if(password_verify($_POST['password'], $hash))
{
echo 0;
}
else
{
echo 1;
}
}
【问题讨论】:
-
@FerozAkbar 在PHP core。
-
您要比较的应该是从先前操作中注册的 db 行中提取的散列密码。
-
那是你的“完整”代码吗?我对此表示怀疑,因为您将其标记为
mysqli。向我们展示您是如何使用它的。我有一些使用这两种功能的现成脚本。 -
密码输入,从表中选择,查询,获取数组,如果密码在使用
password_verify()的行中匹配,完成。这些是基本步骤。 -
您不应该对输入密码进行哈希处理,而是将其与在插入时进行哈希处理的已插入密码进行比较。
标签: php encryption login mysqli passwords