(reprise du message précédent)
Bon... finalement j'ai repris l'intégralité en pas a pas.
Je suis parti du mot de passe non crypté. ok.
j'ai crypté md5... ok.
j'ai concaténé un salt non aléatoire...ok
j'ai crypté mdr le tout... ok
j'ai généré un salt aléatoire... ok (enfin ca semble fonctionner, va falloir poursuivre les tests pour confirmer).
Alors maintenant voici la situation :
je peux enregistrer login et mdp avec accents -> je peux me logguer
je peux enregistrer login avec caractères spéciaux comme par exmple "'@ , idem mot de passe avec caractères spéciaux --> avec mot de passe accentué et mot de passe avec caractères spéciaux, impossible de se logguer, mot de passe non reconnu...
En conclusion provisoire:
les accents c'st bon, les caractères spéciaux, c'est pas bon.
code enregistrement :
code de login :
Modifié par Gryzzly (04 Jun 2007 - 23:16)
Bon... finalement j'ai repris l'intégralité en pas a pas.
Je suis parti du mot de passe non crypté. ok.
j'ai crypté md5... ok.
j'ai concaténé un salt non aléatoire...ok
j'ai crypté mdr le tout... ok
j'ai généré un salt aléatoire... ok (enfin ca semble fonctionner, va falloir poursuivre les tests pour confirmer).
Alors maintenant voici la situation :
je peux enregistrer login et mdp avec accents -> je peux me logguer
je peux enregistrer login avec caractères spéciaux comme par exmple "'@ , idem mot de passe avec caractères spéciaux --> avec mot de passe accentué et mot de passe avec caractères spéciaux, impossible de se logguer, mot de passe non reconnu...
En conclusion provisoire:
les accents c'st bon, les caractères spéciaux, c'est pas bon.
code enregistrement :
function user_register($user_name, $user_password, $user_email)
{
// Obtenir une clé salt avec notre fonction generate_salt()
$salt = generate_salt();
// On crypte le mot de passe par méthode md5 et en incluant la clé salt
$encrypted = md5(md5($user_password).$salt);
// On récupère le timestamp
$timestamp = time();
// Pour finir, on enregistre les informations dans la base de données
$query = "INSERT INTO user (user_name, user_password, user_salt, user_email, user_timestamp) VALUES ('$user_name', '$encrypted', '$salt', '$user_email', '$timestamp')";
mysql_query ($query) or die ('Impossible de créer l\'utilisateur.' .mysql_error());
}
code de login :
function user_login($user_name, $user_password)
{
// Tester et récupérer la clé salt de la base grace au login
$query = "SELECT user_salt FROM user WHERE user_name='$user_name' LIMIT 1";
$result = mysql_query($query);
if (mysql_num_rows($result) == 0)
{
echo 'Etes vous inscrits ? Avez vous suivi les indications incluses dans le mail de confirmation ?';
}
if (mysql_num_rows($result) > 0)
{
// On récupère l'utilisateur
$user = mysql_fetch_array($result);
// On encryte le mot de passe en utilisant la clé salt et on vérifie si ça correspond à la base
$encrypted_pass = md5(md5($user_password).$user['user_salt']);
// On teste l'utilisateur avec login et mot de passe crypté
$query = "SELECT user_id, user_name, user_email FROM user WHERE user_name='$user_name' AND user_password='$encrypted_pass'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0)
{
$user = mysql_fetch_array($result);
// On crypte les informations à stocker dans la session
$user_id = $user['user_id'];
$encrypted_id = md5($user['user_id']);
$encrypted_name = md5($user['user_name']);
$user_email = $user['user_email'];
// Store the data in the session
$_SESSION['userid'] = $user_id;
$_SESSION['username'] = $user_name;
$_SESSION['useremail'] = $user_email;
$_SESSION['encrypted_id'] = $encrypted_id;
$_SESSION['encrypted_name'] = $encrypted_name;
// Return ok code
return 'Correct';
}
else
{
return 'Le mot de passe est incorrect';
}
}
else
{
return 'Etes vous inscrits ? Avez vous suivi les indications incluses dans le mail de confirmation ?';
}
}
Modifié par Gryzzly (04 Jun 2007 - 23:16)