Ignorując na razie problemy z wyciągami do bazy danych, odpowiem na pytanie dotyczące password_hash
.
Krótko mówiąc, nie, nie tak to robisz. Nie chcesz przechowywać samej soli, powinieneś przechowywać zarówno skrót, jak i sól, a następnie używać obu do weryfikacji hasła. password_hash
zwraca ciąg zawierający oba.
password_hash
funkcja zwraca ciąg, który zawiera zarówno skrót, jak i sól. A więc:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user
Następnie do weryfikacji:
// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
// Verified
}
Dodatkowo, jak sugerują komentarze, jeśli interesuje Cię bezpieczeństwo, możesz zajrzeć do mysqli
(ext/mysql
jest przestarzały w PHP5.5), a także ten artykuł na temat wstrzykiwania SQL:http://php.net/manual/en/security.database.sql-injection.php