Ich ignoriere die Probleme mit Ihren Datenbankanweisungen vorerst und beantworte die Frage zu password_hash
.
Kurz gesagt, nein, so macht man das nicht. Sie möchten das Salt nicht allein speichern, Sie sollten sowohl den Hash als auch das Salt speichern und dann beide verwenden, um das Passwort zu überprüfen. password_hash
gibt einen String zurück, der beides enthält.
Der password_hash
Die Funktion gibt einen String zurück, der sowohl den Hash als auch das Salt enthält. Also:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user
Dann zur Überprüfung:
// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
// Verified
}
Wie die Kommentare andeuten, sollten Sie sich außerdem mysqli
ansehen, wenn Sie an Sicherheit interessiert sind (ext/mysql
ist in PHP5.5 veraltet), und auch dieser Artikel über SQL-Injection:http://php.net/manual/en/security.database.sql-injection.php