有人可以告诉我如何当某人登录时验证散列密码吗?如何验证用户登录时的散列密码
这里是我的注册代码:
$db_password = password_hash($password, PASSWORD_DEFAULT);
// Enter info into the Database.
$info2 = htmlspecialchars($info);
$sql = mysql_query("INSERT INTO users
(first_name, last_name, email_address, username, password, signup_date)
VALUES('$first_name', '$last_name',
'$email_address', '$username',
'$db_password', now())")
or die (mysql_error());
这是在登录时运行我的检查用户代码。 。
$hash = password_hash($password, PASSWORD_DEFAULT);
// check if the user info validates the db
$sql = mysql_query("SELECT *
FROM users
WHERE username='$username'
AND password='$hash'
AND activated='1'");
$login_check = mysql_num_rows($sql);
我找不出来。
忘记登录时我正在会见凭据无效消息 – user3205214
当您检查口令来添加的,你看从现有的散列数据库并使用[password_verify()](http://www.php.net/manual/en/function.password-verify.php)检查用户输入的密码 –
请[停止使用'mysql_ *'函数](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他们不再被维护,并[正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。了解[准备的陈述](http://en.wikipedia.org/wiki/Prepared_statement),并使用[PDO](http://jayblanchard.net/demystifying_php_pdo.html)。另外,你在查询中使用变量的方式会让我相信你可能是[SQL注入。]的受害者(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection -in-php) –