【发布时间】:2016-05-10 19:54:13
【问题描述】:
我想我已经直接从 mysql 数据库中使用函数PASSWORD 对密码进行了哈希处理(我在这里做错了吗?)。我正在尝试使用此代码验证该密码:
if($submit)
{
$first=$_POST['first'];
$password=$_POST['password'];
$hash="*85955899FF0A8CDC2CC36745267ABA38EAD1D28"; //this is the hashed password i got by using function PASSWORD in database
$password=password_verify($password,$hash);
$db = new mysqli("localhost", "root","","learndb");
$sql = "select * from admin where username = '" . $first . "' and password = '". $password . "'";
$result = $db->query($sql);
$result=mysqli_num_rows($result);
if($result>0)
{
session_start();
$_SESSION['logged_in'] = true;
session_regenerate_id(true);
header("Location:loginhome.php");
}
}
但是密码不匹配。我在这里错过了什么?
更新:
在所有建议之后,我使用 php 代码中的 password_hash 存储到数据库中。
$db = new mysqli("localhost", "root","","learndb");
$password=password_hash('ChRisJoRdAn123',PASSWORD_DEFAULT);
$sql="INSERT INTO admin (username,password)values('ChrisJordan','$password')";
$db->query($sql);
密码还是不匹配。
【问题讨论】:
-
password_verify不使用 MySQL 密码格式(它使用 Bcrypt)。 -
你在用mysql
PASSWORD函数吗? -
@AlexanderO'Mara 我没有在 mysql 本身中看到 Bcrypt 函数。
-
@micky 我的意思是 PHP 的
password_*函数使用 Bcrypt,MySQL 使用其他东西。 -
@AlexanderO'Mara 请查看我有问题的更新。
标签: php mysql database mysqli passwords