22-02-2007, 12:10 AM
(Modification du message : 08-04-2010, 07:40 PM par Sephi-Chan.)
Bonsoir.
Alors voilà, j'ai un script de connexion pour mon jeu (c'était le seul truc au point jusqu'à maintenant...:pleure2.
J'utilise la fonction md5 sur le mot de passe saisi (ainsi qu'à l'inscription).
Jusqu'à aujourd'hui, ça marchait, mais là, je sais pas ce que j'ai touché, ça me met toujours "mot de passe incorrect"...
Dans header.php, on trouve notamment un isset (pour la session), et la connexion à la bdd.
Dans footer.php, on trouve notamment la déconnexion de la bdd.
Donc rien de notable à ce niveau-là, je pense.
Voilà le code de la page index.php :
Alors voilà, j'ai un script de connexion pour mon jeu (c'était le seul truc au point jusqu'à maintenant...:pleure2.
J'utilise la fonction md5 sur le mot de passe saisi (ainsi qu'à l'inscription).
Jusqu'à aujourd'hui, ça marchait, mais là, je sais pas ce que j'ai touché, ça me met toujours "mot de passe incorrect"...
Dans header.php, on trouve notamment un isset (pour la session), et la connexion à la bdd.
Dans footer.php, on trouve notamment la déconnexion de la bdd.
Donc rien de notable à ce niveau-là, je pense.
Voilà le code de la page index.php :
Code PHP :
<?php
session_start();
$titre_page = 'Index';
include("header.php");
if ($_SESSION['logged'] == true) { echo'Vous êtes connecté.'; }
// Pour alléger un peu la page, j'ai viré le bout de code pour la connexion automatique (cookie)
// Ici on gère le formulaire de connexion
// Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent
if (isset($_POST['connexion']) && $_SESSION['logged'] == false)
{
// Vérification des autres variables
if (isset($_POST['pseudo'],$_POST['password']) && !empty($_POST['pseudo']) && !empty($_POST['password']))
{
// Vérification du pseudo
$pseudo = htmlspecialchars($_POST['pseudo']);
$password = $_POST['password'];
// Requête comptant le nombre de pseudos $_POST['pseudo']
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM comptes WHERE pseudo='".$pseudo."'");
// Si le pseudo existe
if (mysql_result($sql,0,'nb_pseudo') == 1)
{
// Vérification du mot de passe
// Information sur le compte du membre
$sql_infos = mysql_query("SELECT id, password, confirmation FROM comptes WHERE id='".$donnees['id']."'");
$donnees = mysql_fetch_array($sql_infos);
// Hashage du mot de passe
$password_hash = md5($password);
echo''.$donnees[".password."].'<br />';
echo''.$password_hash.'<br />';
// Comparaison du mot de passe
if ($password_hash == $donnees['password'])
{
// On vérifie que le compte est confirmé
// Si $donnees['confirmation'] vaut 1
if ($donnees['confirmation'] == 1)
{
if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on')
{
// Temps d\'expiration des cookies (1 an)
$expire = time() + 3600 * 24 * 365;
setcookie('pseudo', $pseudo, $expire);
setcookie('password', $password_hash, $expire);
}
// Tout est bon, on connecte le membre
$_SESSION['logged'] = true;
// Création de 2 variables de session, contenant des informations sur le membre
$_SESSION['id'] = $donnees['id']; //Id du membre
$_SESSION['pseudo'] = $pseudo; //Pseudo du membre
echo'Vous êtes correctement identifié, <a href="stats.php">Stats</a>';
}
else
echo'Erreur : le compte n\'est pas confirmé.';
}
else
echo'Erreur : le mot de passe est incorrect.';
}
else
echo'Erreur : ce pseudo n\'existe pas.';
}
else
echo'Erreur : veuillez remplir tous les champs.';
}
if ($_SESSION['logged'] == false) {
echo'<table>
<form method="post" action="index.php">
<tr><td><label for="pseudo">Pseudo : </td><td><input type="text" name="pseudo" id="pseudo" /></label></td></tr>
<tr><td><label for="password">Mot de passe : </td><td><input type="password" name="password" id="password" /></label></td></tr>
<tr><td><label for="souvenir">Connexion automatique : </td><td><input type="checkbox" name="souvenir" id="souvenir" /></label></td></tr>
<tr><td align="center"><input type="submit" name="connexion" value="Connexion" /></td></tr>
</form>
</table>
Pas encore membre ? <a href="preinscription.php">S\'inscrire</a>
';
}
// Inclusion du footer
include("footer.php");
?>
Et voilà le code de la page inscription.php (pour vous montrer le hashage avec md5) :
Code PHP :
<?php
session_start();
$titre_page = 'Inscription';
include("header.php");
//On vérifie que la variable $_POST['inscription'] existe
if (isset($_POST['inscription']))
{
//Si les variables contenant le pseudo, le mot de passe et l'email existent et contiennent quelque chose
if (isset($_POST['pseudo'], $_POST['password'], $_POST['email']) && !empty($_POST['pseudo']) && !empty($_POST['password']) && !empty($_POST['email']))
{
//Si le pseudo est supérieur à 3 caractères et inférieur à 35 caractères
if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 16)
{
//Si le mot de passe est supérieur à 4 caractères
if (strlen(trim($_POST['password'])) > 4)
{
//Mesure de sécurité
$pseudo = htmlspecialchars($_POST['pseudo']);
$password = htmlspecialchars($_POST['password']);
$email = htmlspecialchars($_POST['email']);
//On vérifie que le pseudo n'existe pas
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM comptes WHERE pseudo='".$pseudo."'");
if (mysql_result($sql, 0, 'nb_pseudo') == 0)
{
//Hashage du mot de passe avec md5()
$password = md5($password);
//Génération du code de confirmation
$lettres_chiffres = 'abcdefghijklmnopqrstuvwxyz0123456789';
$lettres_chiffres_melanges = str_shuffle($lettres_chiffres);
$code_confirmation = substr($lettres_chiffres_melanges, 1, 10);
//Envoi du mail de confirmation
$message = '
Bonjour, '.$pseudo.'.
Blablabla';
//Si le mail a été envoyé on peut enregistrer le membre
if (mail($email, 'Confirmation de votre inscription', $message, 'sujet'))
{
// adresse ip:
$ip=$_SERVER['REMOTE_ADDR'];
// timestamp
$tmstp_register=time();
//On exécute la requête qui enregistre le nouveau membre:
mysql_query("INSERT INTO comptes (id, ip, pseudo, password, confirmation, email, confirmation_code, tmstp_register, tmstp_lastconnect) VALUES ('', '".$ip."', '".$pseudo."', '".$password."', '0', '".$email."', '".$code_confirmation."', '".$tmstp_register."', '".$tmstp_register."')");
print 'Merci de vous être enregistré(e), votre compte a bien été créé.<br />
Toutefois, votre compte requiert une activation.<br />
Un e-mail contenant un lien de confirmation de votre inscription vous a été envoyé, vous devriez le recevoir sous peu.';
print '<br /><br /><a href="index.php">Index</a>';
}
else
{
print 'Erreur : échec lors de l\'envoi du mail. Veuillez vous ré-inscrire.';
}
}
else
print 'Erreur : ce pseudo est déjà enregistré.';
}
else
print 'Erreur : le mot de passe est trop court.';
}
else
print 'Erreur : le pseudo est trop court ou trop long.';
}
else
print 'Erreur : tous les champs ne sont pas remplis.';
}
include("footer.php");
?>