Page 1 sur 1

Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 12:34
par JeanJean
Bonjour,

Je viens vous voir car je suis entrain de créer un script d'authentification mais j'ai un problème qui se pose.

Voilà le code :

Code : Tout sélectionner

<?php session_start(); $erreur = null; if(isset($_POST['auth_pseudo']) && isset($_POST['auth_mdp'])){ $host = "localhost"; $login = "Jean"; $mdp = ""; $bdd = ""; $co_serv = mysql_connect($host,$login,$mdp); $co_bdd = mysql_select_db($bdd); if(!$co_serv || !$co_bdd){ $erreur = 'Connexion au serveur distant impossible'; } $pseudo = mysql_real_escape_string($_POST['auth_pseudo']); $motdepasse = sha1($_POST['auth_mdp']); $mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"'); if(mysql_num_rows($mdp_querry)){ $echo_mdp = mysql_result($mdp_querry,0); } function verification(&$erreur,$pseudo,$motdepasse,$echo_mdp){ if(empty($pseudo) || empty($motdepasse)){ $erreur = 'Un ou plusieurs champs du formulaire sont vides'; return false; } elseif($echo_mdp == 0){ $erreur = 'Mauvais pseudo'; return false; } elseif($echo_mdp != $motdepasse){ $erreur = 'Mauvais mot de passe'; return false; } else{ return true; } } $verif = verification($erreur,$pseudo,$motdepasse,$echo_mdp); if($verif){ $sessionpseudo = $_SESSION['pseudo']; if(isset($_POST['checkbox'])){ setcookie("cookiepseudo",$pseudo,time()+60*60*24*365*100); setcookie("cookiemdp",$motdepasse,time()+60*60*24*365*100); } else{ setcookie("cookiepseudo","",time()-60*24,"/"); setcookie("cookiemdp","",time()-60*24,"/"); } header('Location: test.php'); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Index</title> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" /> </head> <body> <div id="corp"> <!-- Corp de la page --> <div id="banniere"> <!-- Bannière de la page --> </div> <div id="menu"> <!-- Menu horizontal --> <ul id="onglets"> <!-- Menu horizontal de la page --> <li class="arrondi"><a href="index.php">Accueil</a></li> <li><a href="astuces.php">Exposez !</a></li> <li><a href="forum/index.php">Forum</a></li> </ul> </div> </div> </body> </html> <?php if(!isset($_SESSION['pseudo'])){ ?> <div id="connexion"> <!-- Espace connection de la page --> <span class="titreconnexion">C'est qui ?</span> <form method="post"> <label for="auth_pseudo" style="font:14px calibri" maxlength="16" >Pseudo : <br/></label> <input type="text" name="auth_pseudo" /><br /><br /> <label for="auth_mdp" style="font:14px calibri">Mot de passe : <br /></label> <input type="password" name="auth_mdp" /><br /> <a href="#" style="font:11px calibri; text-decoration:none; color:#000;" >Mot de passe oublié ?</a><br /><br/> <input type="checkbox" name="checkbox" /> <label for="checkbox" style="font:14px calibri"> Se souvenir de moi. <br/><br/></label> <input type="submit" name="submit" Value="Connexion" /><br /><br/> <a href="inscription.php" style="font:14px calibri; text-decoration:none; color:#FF9600;"><u>Pas encore inscrit ?</u></a> <?php if($erreur != ''){ echo '<span class="erreur">'.$erreur.'</span>'; } ?> </form> </div> <?php } else{ echo 'Ca fonctionne'; } ?>
Lorsque je clique sur 'connexion', j'ai ce message d'erreur qui s'affiche à l'écran : Notice: Undefined variable: echo_mdp in D:\wamp\www\xxx\test.php on line 45
Cependant, le reste de la page s'affiche bien et j'ai bien les messages d'erreurs pour l'utilisateur qui s'affichent. ;)

J'ai tenté de régler le problème en ajoutant en début de script :

$echo_mdp = ' '; (L'erreur "Notice..." ne s'affiche plus, mais les messages pour l'utilisateur non plus !)
$echo_mdp = null; (Pareil qu'au dessus)

J'ai également tenter d'intégrer ces lignes dans la fonction vérification :

Code : Tout sélectionner

$mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"'); if(mysql_num_rows($mdp_querry)){ $echo_mdp = mysql_result($mdp_querry,0); }
J'ai bien ajouté $mdp_querry entre les parenthèses de la fonction, mais cela me retourne deux erreurs :

Notice: Undefined variable: echo_mdp in D:\wamp\www\xxx\test.php on line 45
Notice: Undefined variable: mdp_querry in D:\wamp\www\xxx\test.php on line 45

Là, je suis un peu perdu, c'est pour ça que je demande votre aide. ;)

Merci et bonne année 2010 ! :)

Re: Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 12:40
par stealth35
avant dans ta fonction fais un
var_dump($echo_mdp) pour voir


sinon attention ligne 49 et 50, tu peux pas allé au dela de la valeur max de INT et la tu la depasse, donc au max tu pourras faire

Code : Tout sélectionner

setcookie("cookiepseudo",$pseudo,INT_MAX);
t'arrive en 2032 je crois...

Re: Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 12:59
par JeanJean
Merci de m'avoir répondu si rapidement. ;)

Alors j'ai ajouté var_dump($echo_mdp); avant la fonction et voilà ce que la page me retourne une fois le bouton connexion cliqué :

Notice: Undefined variable: echo_mdp in D:\wamp\www\xxx\test.php on line 27
NULL
Notice: Undefined variable: echo_mdp in D:\wamp\www\xxx\test.php on line 47

Merci pour la valeur du int, je n'étais pas au courant. ;)

Re: Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 15:21
par stealth35
lorsque qu'il ne trouve rien $echo_mdp n'existe pas

test :

Code : Tout sélectionner

if(mysql_num_rows($mdp_querry)) { $echo_mdp = mysql_result($mdp_querry,0); } else { $echo_mdp = null; }

Re: Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 16:08
par JeanJean
Je viens de tester. ;)

Désormais, quand je clique sur connexion, l'erreur "Notice [...]" ne s'affiche plus, mais les erreurs pour les utilisateurs ne s'affichent plus non plus ! :(

Merci de ton aide. ;)

Re: Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 16:13
par stealth35
Je viens de tester. ;)

Désormais, quand je clique sur connexion, l'erreur "Notice [...]" ne s'affiche plus, mais les erreurs pour les utilisateurs ne s'affichent plus non plus ! :(

Merci de ton aide. ;)
met la suite de l'erreur

Re: Erreur lors de la création d'un script d'authentification

Posté : 07 janv. 2010, 16:32
par JeanJean
En enlevant le else que tu m'as demander de tester auparavant j'ai ça qui s'affiche : Notice: Undefined variable: echo_mdp in D:\wamp\www\xxx\test.php on line 45

Ainsi que le message destiné à l'utilisateur : Un ou plusieurs champs du formulaire sont vides

Si j'ajoute le else, ni l'une ni l'autre n'apparaisse. Or il est impératif que l'erreur destiné à l'utilisateur apparaisse.

;)

Re: Erreur lors de la création d'un script d'authentification

Posté : 08 janv. 2010, 00:06
par JeanJean
Problème résolue. ;)

Code : Tout sélectionner

function search_result($pseudo){ $mdp_querry = mysql_query('SELECT mdp FROM membre WHERE pseudo="'.$pseudo.'"'); if($echo_mdp = mysql_num_rows($mdp_querry)){ return $echo_mdp; } return $echo_mdp; }
Avec l'ajout de la fonction ci-dessus.

Merci. ;)