好的,所以我试图为我的个人网站制作注册/登录代码 我在登记表上没有遇到任何麻烦,但我在登录方面遇到了一些困难 这是我的代码的一部分:
$stmt = $pdo->prepare("SELECT password FROM members where username = ? ");
$stmt->bindValue(1, $username);
$stmt->execute();
现在根据我的理解,我需要从表中获取第一行,将其转换为字符串,然后使用password_verify
将该字符串与用户在我创建的表单中输入的内容进行比较。我遇到的问题是它获取一个数组并且不能真正使用password_verify
来比较字符串和数组。
难道我做错了什么?我应该怎么做?
TL; dr我如何从DB中实际选择一个散列密码,将其转换为字符串,然后将该字符串与我的用户输入的密码进行比较。
感谢。
答案 0 :(得分:1)
这个库适用于 PHP 5.5+:使用password_hash
$sql = "SELECT * FROM members WHERE username = ?";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute([$_POST['username']]);
$users = $result->fetchAll();
if (isset($users[0]) {
if (password_verify($_POST['password'], $users[0]->password) {
// valid login
} else {
// invalid password
}
} else {
// invalid username
}