Bỏ qua các vấn đề với câu lệnh cơ sở dữ liệu của bạn bây giờ, tôi sẽ trả lời câu hỏi liên quan đến password_hash
.
Trong ngắn hạn, không, đó không phải là cách bạn làm điều đó. Bạn không muốn lưu trữ muối một mình, bạn nên lưu trữ cả băm và muối, sau đó sử dụng cả hai để xác minh mật khẩu. password_hash
trả về một chuỗi chứa cả hai.
password_hash
hàm trả về một chuỗi chứa cả băm và muối. Vì vậy:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user
Sau đó để xác minh:
// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
// Verified
}
Ngoài ra, như các nhận xét cho thấy, nếu bạn quan tâm đến bảo mật, bạn có thể muốn xem mysqli
(ext/mysql
không được dùng nữa trong PHP5.5) và cả bài viết này về SQL injection: http://php.net/manual/en/security.database.sql-injection.php