Pb de code : authentification

Eléphanteau du PHP | 48 Messages

07 juin 2005, 10:59

Bonjour à tous 8)

Voilà, je crée un site qui aura pour but de permettre aux utlisateurs de créer leur propre espace perso.
J'en suis à l'authentification mais j'ai quelques pb.

Voilà la page login.php :

Code : Tout sélectionner

<html> <head> <title>Dr-Bug :: Login</title> </head> <body> <img src="logo.jpg"> <center> <?php $pseudo=$_POST['pseudo']; echo $pseudo; $cnn=mysql_pconnect("localhost", "root", ""); mysql_select_db("bd_site", $cnn); $reqsql="select pseudo, mdp from client where pseudo = '$pseudo' and mdp='$mdp'"; $result=mysql_query($reqsql, $cnn); $enreg=mysql_fetch_object($result); if (!$enreg) { print("<h1>/!\ Ces identifiants sont incorrects, veuillez les re-saisir. Merci /!\</h1>"); echo " <form name=\"validation\" method=\"post\" action=\"login.php\"> <TABLE width=250 border=1 cellpadding=3> <tr><td colspan=2><CENTER><FONT size=\"+2\"> <b>Accès à votre espace perso</b></FONT></CENTER></td></tr> <tr><td>Pseudo:</td><td><input type=\"text\" name=\"pseudo\" size=\"12\"></td></tr> <tr><td>Mot de passe:</td><td><input type=\"PASSWORD\" name=\"mdp\" size=\"3\" maxlength=\"6\"></td></tr> <tr><td colspan=2 align=center> <input type=\"submit\" value=\"Valider\"> <input type=\"reset\" value=\"Effacer la saisie\"></td></tr> </TABLE> </form> "; } else { // CREATION D'UN IDENTIFIANT ALEATOIRE $taille = 20; $lettres = "abcdefghijklmnopqrstuvwxyz0123456789"; srand(time()); for ($i=0;$i<$taille;$i++) { $id.=substr($lettres,(rand()%(strlen($lettres))),1); } // MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE $reqsql="update client set id=\"$id\" where pseudo=\"$pseudo\" and mdp=\"$mdp\""; // REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?id=$id\"> <input type=\"submit\" value=\"Accéder\"> </form> "; // DECONNEXION MYSQL mysql_close($cnn); } ?> </center> </body> </html>
Et la page zonemembre.php :

Code : Tout sélectionner

<html> <head> <title>Dr-Bug :: Espace membre</title> </head> <body> <img src="logo.jpg"> <center> <h1><strong>Votre page perso</strong></h1> <?php $pseudo=$_POST['pseudo']; $id=$_POST['id']; echo $pseudo; ?> <br><br><br> <form method="post" action="accueil.php"> <input type="submit" value="Retour à l'accueil"> </form> </body> </html>
Dnas cette dernière lorsque je fais le test echo pour vérifier si la variable "pseudo" passe, ça ne marche pas, alors que ce test fonctionne sur la page précédente.

De plus, l'identifiant aléatoire que je crée dans la page login ne s'insère pas dans la base...


Merci !

Je continue de chercher de mon côté.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2005, 11:06

Dnas cette dernière lorsque je fais le test echo pour vérifier si la variable "pseudo" passe, ça ne marche pas, alors que ce test fonctionne sur la page précédente.
Il afut que dans ton 2eme formulaire, tu place un input qui est comme nom pseudo sinon tu ne pourra pas le récupérer

Ton input pseudo est définit dans le 1er formulaire et ne peut être accéssible que depuis la page action de ton 1er form !!!
De plus, l'identifiant aléatoire que je crée dans la page login ne s'insère pas dans la base...
Quelle ligne doit, selon toi, faire cette action ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:13

Dnas cette dernière lorsque je fais le test echo pour vérifier si la variable "pseudo" passe, ça ne marche pas, alors que ce test fonctionne sur la page précédente.
Il afut que dans ton 2eme formulaire, tu place un input qui est comme nom pseudo sinon tu ne pourra pas le récupérer

Ton input pseudo est définit dans le 1er formulaire et ne peut être accéssible que depuis la page action de ton 1er form !!!
Ah oui, en hidden c'est ça ?
De plus, l'identifiant aléatoire que je crée dans la page login ne s'insère pas dans la base...
Quelle ligne doit, selon toi, faire cette action ?
Et bien la requête :
$reqsql="update client set id="$id" where pseudo="$pseudo" and mdp="$mdp"";
Non ?...

Sinon j'ai testé en mettant le pseudo à la place de l'id dans l'adresse ici :
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name="membre" method="post" action="zonemembre.php?pseudo=$pseudo">
       <input type="submit" value="Accéder">
       </form>
       ";
Et ma variable pseudo est ainsi transmise...
[/code]

Mammouth du PHP | 19672 Messages

07 juin 2005, 11:13

Salut,
c'est normal : tu envoies l'id à la seconde page en paramètre de l'url: pour le récupérer, ce n'est pas avec $_POST['id'] mais avec $_GET['id'] que tu vas le retrouver.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:14

Salut,
c'est normal : tu envoies l'id à la seconde page en paramètre de l'url: pour le récupérer, ce n'est pas avec $_POST['id'] mais avec $_GET['id'] que tu vas le retrouver.
J'ai testé avec $_GET['id'] mais ça ne fonctionnait pas non plus :(

Mammouth du PHP | 19672 Messages

07 juin 2005, 11:16

Est-ce que tu vois bien une valeur dans l'url ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:17

Est-ce que tu vois bien une valeur dans l'url ?
Oui oui la valeur s'affiche sans l'url, et si je teste avec un echo elle s'affiche également sur la page, mais pas d'insertion dans la base.

Par contre lorsque je teste avec le pseudo, il s'affiche dans l'url et sur la page.
Mais pour une authentification personnelle il me faut un ID. Ou alors y a t il une autre méthode que je ne connais pas.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2005, 11:19

A la place de ça :
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php?pseudo=$pseudo\">
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";
Utilise plutot les champs hidden
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name=\"membre\" method=\"post\" action=\"zonemembre.php\">
       <input type='hidden' name='pseudo' value='".$pseudo."'>
       <input type=\"submit\" value=\"Accéder\">
       </form>
       ";
Sinon, cette ligne est une requete, certes, mais elle n'est pas exécutée !!!!
$reqsql="update client set id=\"$id\" where pseudo=\"$pseudo\" and mdp=\"$mdp\"";
Si tu veux qu'elle soit exécutée, tu doit faire :
$reqsql="update client set id=\"$id\" where pseudo=\"$pseudo\" and mdp=\"$mdp\"";
mysql_query($reqsql, $cnn);
Dans la 1ere ligne, tu la construit, dans la 2eme, tu l'exécute sur le serveur de base de données (MySQL)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:23

A la place de ça :
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name="membre" method="post" action="zonemembre.php?pseudo=$pseudo">
       <input type="submit" value="Accéder">
       </form>
       ";
Utilise plutot les champs hidden
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name="membre" method="post" action="zonemembre.php">
       <input type='hidden' name='pseudo' value='".$pseudo."'>
       <input type="submit" value="Accéder">
       </form>
       ";
Que celà va-t-il changer ?... Désolée si mla question peut paraître conne :oops:
Parce qu'en fait j'ai fait le test avec le pseudo pour voir ce qui passait pas avec l'id, mais je n'en ai pas besoin. Enfin. D'après ce que j'ai lu sur divers tutoriaux et forums, pour une authentification il me faut un id aléatoire; ainsi chaque mebre aura accès à une page qui lui est propre :?:

Sinon, cette ligne est une requete, certes, mais elle n'est pas exécutée !!!!
$reqsql="update client set id="$id" where pseudo="$pseudo" and mdp="$mdp"";
Si tu veux qu'elle soit exécutée, tu doit faire :
$reqsql="update client set id="$id" where pseudo="$pseudo" and mdp="$mdp"";
mysql_query($reqsql, $cnn);
Dans la 1ere ligne, tu la construit, dans la 2eme, tu l'exécute sur le serveur de base de données (MySQL)


Ah mais m**** quelle abrutie :shock: :oops:

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:31

C'est bon problème résolu ! Je m'embrouillais trop les pinceaux :?

Merci de votre aide ! Si j'ai des soucis par la suite je me servirais de ce topic ;)

Break.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2005, 11:32

A la place de ça :
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name="membre" method="post" action="zonemembre.php?pseudo=$pseudo">
       <input type="submit" value="Accéder">
       </form>
       ";
Utilise plutot les champs hidden
echo " <strong><h1>Identifiants corrects, accès à votre espace perso...</h1></strong><br><br><form name="membre" method="post" action="zonemembre.php">
       <input type='hidden' name='pseudo' value='".$pseudo."'>
       <input type="submit" value="Accéder">
       </form>
       ";
Que celà va-t-il changer ?... Désolée si mla question peut paraître conne :oops:
Parce qu'en fait j'ai fait le test avec le pseudo pour voir ce qui passait pas avec l'id, mais je n'en ai pas besoin. Enfin. D'après ce que j'ai lu sur divers tutoriaux et forums, pour une authentification il me faut un id aléatoire; ainsi chaque mebre aura accès à une page qui lui est propre :?:
C'était pour rendre plus propre le code !!!

Parce que créer un formulaire pour passer les arguments comme ça , ...

tu aurais pû te contenter de faire un lien !!!

Sinon, j'ai pas compris pourquoi tu passes le pseudo alors que tu me parles d'id aléatoire !!! Ceci en te confirmant que l'id aléatoire pour naviguer entre les pages, c'est pas mal !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:37

Je voulais juste faire un test.

Mais c'est bon ça marche.

Désolée j'suis dans la section débutant et tu vois bien que j'y ai bien ma place :oops:

Break.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2005, 11:39

Tu sais, j'ai fait une formation de 3 ans en info et j'en apprends tout les jours !!! les tests, c'est la base de l'évolution ...

Donc ton problème est [RESOLU] :?:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 48 Messages

07 juin 2005, 11:44

oui ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2005, 11:49

Donc clique sur le bouton RESOLU qui se trouve en haut à gauche du post que tu as commencé
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer