J'ai chiffré le mot de passe dans mon script de registre et il est stocké dans la base de données. Je dois les utiliser pour me connecter. Je voudrais donc utiliser ceux qui ne sont pas chiffrés. J'ai lu certaines des discussions ici mais rien ne m'aide. Comment puis-je l'ajouter dans mon login.php? Le sel est également stocké dans la base de données.
Ceci est mon script register.php pour le cryptage
$hash = hash('sha256', $password1);
function createSalt()
{
$text = md5(uniqid(Rand(), TRUE));
return substr($text, 0, 3);
}
$salt = createSalt();
$password = hash('sha256', $salt . $hash);
et c'est mon login.php avec la saison
//Create query
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);
//Check whether the query was successful or not
if($result) {
if(mysql_num_rows($result) > 0) {
//Login Successful
session_regenerate_id();
$member = mysql_fetch_assoc($result);
$_SESSION['SESS_MEMBER_ID'] = $member['id'];
$_SESSION['SESS_FIRST_NAME'] = $member['username'];
$_SESSION['SESS_LAST_NAME'] = $member['password'];
session_write_close();
header("location: profile.php");
exit();
}
else {
//Login failed
//error message
}
else {
die("Query failed");
}
Ces exemples proviennent de php.net. Grâce à vous, je viens également d'apprendre les nouvelles fonctions de hachage php.
Lisez la documentation php pour connaître les possibilités et les meilleures pratiques: http://www.php.net/manual/en/function.password-hash.php
Enregistrer un hachage de mot de passe:
$options = [
'cost' => 11,
];
// Get the password from post
$passwordFromPost = $_POST['password'];
$hash = password_hash($passwordFromPost, PASSWORD_BCRYPT, $options);
// Now insert it (with login or whatever) into your database, use mysqli or pdo!
Récupère le hash du mot de passe:
// Get the password from the database and compare it to a variable (for example post)
$passwordFromPost = $_POST['password'];
$hashedPasswordFromDB = ...;
if (password_verify($passwordFromPost, $hashedPasswordFromDB)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
Vous ne pouvez pas vous connecter car vous n'avez pas reçu le texte correct au moment de la connexion . Il y a deux options, la première consiste à définir le sel statique, la seconde si vous voulez créer du sel dynamique, il vous faut stocker dans la base de données) avec associé à l'utilisateur . Alors vous concatérez la chaîne utilisateur solt + password_hash maintenant avec cette requête avec le nom d'utilisateur dans la table de la base de données.
array hash_algos(void)
echo hash('sha384', 'Message to be hashed'.'salt');
Voici un lien pour référence http://php.net/manual/en/function.hash.php