我試圖通過遵循this website來實現安全的用戶身份驗證。但是我無法存儲來自php password_hash函數的字符串結果。我的意思是,這個完美的作品:如何在mysql數據庫中存儲php password_hash
$pass = "anypassyouwant";
$stored = password_hash(
base64_encode(
hash('sha256', $pass, true)
),
PASSWORD_DEFAULT
);
// ...
if (password_verify(
base64_encode(
hash('sha256', $pass, true)
),
$stored
)) {
echo "TRUE";
} else {
echo "FALSE";
}
在真正的應用程序我店「$存儲」在我的數據庫和password_verify用它,但我得到的是虛假的。由於上述代碼完美工作,唯一合理的解釋是數據庫中的存儲。 Varchar和二進制文件不起作用。
有誰知道我應該如何存儲它?
在此先感謝。
我插入指示:
$sql = sprintf("
INSERT INTO tbl_usuarios (nombre, apellidos, password, email, fechanac, url_in, sexo)
VALUES ('%s', '%s', '%s', '%s', '%s', '%s', %u)",
$nombre,
$apellidos,
$pass,
$bd->escape($_POST['email']),
$fechanac,
$url_in,
$sexo
);
凡通是password_hash的結果。我試過%s和%b(db中的varchar和binary)。
哪裏是插入代碼?另外,確保列的長度足以容納散列。投票不清楚。 –
見@看的答案瞭解決問題的方法: http://stackoverflow.com/questions/29959689/php-login-using-mysql-data-and-hashed-password –
散列和存儲密碼PHP的[建在功能](http://jayblanchard.net/proper_password_hashing_with_PHP.html)。 –