关注How do you use bcrypt for hashing passwords in PHP?。
使用以下方法向MySQL提交密码:
$options = array('cost' => 11);
$password = password_hash("$_POST[password]", PASSWORD_BCRYPT, $options);
MySQL中的密码显示为:
mysql> SELECT password FROM users;
+-----------------------------------------------+
| password |
+-----------------------------------------------+
| $2y$11$O77omA4vaNKu0DScTXCBd.FSXKSV0PD0piEokV |
+-----------------------------------------------+
在登录方面:
$hash = $row['password'];
$password = $_POST[password];
if (password_verify($password, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
登录不起作用并始终显示:
密码无效。
我已粘贴相关部分,因为文件非常大。如果需要更多(可能不相关),我可以粘贴。
答案 0 :(得分:2)
我想这是因为列长...使用此设置,生成的密码将有60个字符,返回的密码少,您能显示表结构吗?
PHP文档说:
...因此,建议将结果存储在数据库列中,该列可以扩展到超过60个字符(255个字符将是一个不错的选择)......
见:http://www.php.net/manual/pt_BR/function.password-hash.php
答案 1 :(得分:-1)
if(crypt($user_password, $databse_password)==$databse_password)
{ validate login}
else
{reject login}