Ignorando los problemas con las declaraciones de su base de datos por ahora, responderé la pregunta sobre password_hash
.
En resumen, no, no es así como lo haces. No desea almacenar solo la sal, debe almacenar tanto el hash como la sal, y luego usar ambos para verificar la contraseña. password_hash
devuelve una cadena que contiene ambos.
El password_hash
La función devuelve una cadena que contiene tanto el hash como la sal. Entonces:
$hashAndSalt = password_hash($password, PASSWORD_BCRYPT);
// Insert $hashAndSalt into database against user
Luego para verificar:
// Fetch hash+salt from database, place in $hashAndSalt variable
// and then to verify $password:
if (password_verify($password, $hashAndSalt)) {
// Verified
}
Además, como sugieren los comentarios, si está interesado en la seguridad, puede consultar mysqli
(ext/mysql
está en desuso en PHP5.5), y también este artículo sobre inyección SQL:http://php.net/manual/en/security.database.sql-injection.php