所以我散列字符串「測試」不能讓PHP password_hash API工作
$hash = password_hash("test", PASSWORD_DEFAULT);
在我的密碼字段保存它(VARCHAR 255)
然後我做了一個簡單的測試登錄頁面
if (!empty($_POST['username']) && !empty($_POST['password']))
{
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$stmt = $db->prepare("SELECT username, password FROM users WHERE username = ? AND password = ?");
$stmt->execute(array($username, $password));
$row = $stmt->fetch();
$hash = $row['password'];
if (password_verify($password, $hash)) {
//success
} else {
//wrong credentials
}
然後我輸入用戶名和密碼test
,但它返回false時,它應返回true(但顯然我錯了,因爲這不,在這裏我在想念的東西)
我在這裏做錯了什麼?
一直在讀它,但我不知道爲什麼它不會返回true。請注意,我是新手。
此外,爲什麼鹽,我猜,前6個字符,開始在散列總是相同的? $2y$10
。那不好。
你的文字輸入'$密碼「在SELECT查詢中不匹配,當該列包含散列時。 – mario 2014-11-08 05:38:09