PHP验证哈希密码

PHP验证哈希密码,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我的数据库中有一个用户表,其中的密码是用密码函数加密的。问题是我想创建一个登录系统,但我不知道如何创建。我知道我可以使用类似的方法 SELECT `username`,`password` FROM `users` WHERE `username` = $user AND `password` = PASSWORD($password) $sql = "SELECT * FROM users WHERE username=? AND password=?"; //..... $stmt =

我的数据库中有一个用户表,其中的密码是用密码函数加密的。问题是我想创建一个登录系统,但我不知道如何创建。我知道我可以使用类似的方法

SELECT `username`,`password`
FROM `users`
WHERE `username` = $user 
AND `password` = PASSWORD($password)
$sql = "SELECT * FROM users WHERE username=? AND 
password=?";
//.....
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ss", $u,$p);
但是我想使用预先准备好的语句,所以我的代码如下所示

SELECT `username`,`password`
FROM `users`
WHERE `username` = $user 
AND `password` = PASSWORD($password)
$sql = "SELECT * FROM users WHERE username=? AND 
password=?";
//.....
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ss", $u,$p);

有什么想法吗?

您可以在SQL查询中使用密码函数,如下所示:

$sql = "SELECT * FROM users WHERE username=? AND 
password=PASSWORD(?)";
//.....
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ss", $u,$p);

如果你真的想使用mysql的密码,那么试着执行这个查询
选择密码('hello')
;请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,不需要对它们执行任何操作或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。