Page 1 sur 1

Pb de code : authentification

Posté : 07 juin 2005, 10:59
par break_71
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é.

Posté : 07 juin 2005, 11:06
par zeus
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 ?

Posté : 07 juin 2005, 11:13
par break_71
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]

Posté : 07 juin 2005, 11:13
par Cyrano
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.

Posté : 07 juin 2005, 11:14
par break_71
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 :(

Posté : 07 juin 2005, 11:16
par Cyrano
Est-ce que tu vois bien une valeur dans l'url ?

Posté : 07 juin 2005, 11:17
par break_71
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.

Posté : 07 juin 2005, 11:19
par zeus
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)

Posté : 07 juin 2005, 11:23
par break_71
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:

Posté : 07 juin 2005, 11:31
par break_71
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.

Posté : 07 juin 2005, 11:32
par zeus
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 !!!

Posté : 07 juin 2005, 11:37
par break_71
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.

Posté : 07 juin 2005, 11:39
par zeus
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] :?:

Posté : 07 juin 2005, 11:44
par break_71
oui ;)

Posté : 07 juin 2005, 11:49
par zeus
Donc clique sur le bouton RESOLU qui se trouve en haut à gauche du post que tu as commencé