Ignoruji prozatím problémy s vašimi databázovými výpisy a odpovím na otázku týkající se password_hash
.
Zkrátka ne, takhle se to nedělá. Nechcete ukládat sůl samotnou, měli byste ukládat jak hash, tak sůl a poté použít obojí k ověření hesla. password_hash
vrátí řetězec obsahující obojí.
password_hash
Funkce vrací řetězec, který obsahuje hash i sůl. Takže:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user
Poté pro ověření:
// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
// Verified
}
Navíc, jak naznačují komentáře, pokud vás zajímá bezpečnost, můžete se podívat na mysqli
(ext/mysql
je v PHP5.5 zastaralý) a také tento článek o SQL injection:http://php.net/manual/en/security.database.sql-injection.php