Votre question

Authentification php

Tags :
  • Programmation
Dernière réponse : dans Programmation
12 Mai 2009 11:06:22

Bonjour,
j'aimerai mettre en place un petit programme pour une authentification pour un accès à internet. j'ai 2 petit morceau de codes,
le premiers est le formulaire d'authentification:


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
  6.  
  7. <title>Authentification</title>
  8. <link rel="stylesheet" type="text/css" media="screen,projection" href="ecran.css"/>
  9.  
  10. <script type="text/javascript" src="script.js"></script>
  11. </head>
  12. <body>
  13. <p>Saisissez vos Nom et mot de passe pour vous identifier: </p>
  14. <form action="Validation.php" method="post">
  15. <table border="0">
  16. <tr>
  17. <td>Nom:</td>
  18. <td><input type="text" name="Nom" size="25" class="majuscule" /></td>
  19. </tr>
  20. <tr>
  21. <td>Prenom:</td>
  22. <td><input type="text" name="Prenom" size="25"/></td>
  23. </tr>
  24. <tr>
  25. <td>Mot de passe:</td>
  26. <td><input type="password" name="Password" size="10"/></td>
  27. </tr>
  28. </table>
  29. <p><input type="submit" name="Valider" value="Valider"/></p>
  30. </form>
  31.  
  32.  
  33. </body>
  34. </html>


le second est la connexion à ma bdd pour valider l'authentification:

  1. <?php
  2. session_start();
  3. $_SESSION=array(); //efacement de toutes les variables enregistrées
  4.  
  5. //Connection au serveur MYsql et à la Bdd
  6. $mysql_hostname="localhost";
  7. $mysql_username = "root";
  8. $mysql_password = "";
  9. $mysql_basename = "sergentberthet";
  10. $ConnexionServeur = mysql_connect($mysql_hostname, $mysql_username, $mysql_password );
  11. $ConnexionBdd = mysql_select_db($mysql_basename, $ConnexionServeur);
  12. ?>
  13.  
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  15. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
  17. <head>
  18. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
  19. <title>Validation</title>
  20. <link rel="stylesheet" type="text/css" media="screen,projection" href="ecran.css"/>
  21.  
  22. <script type="text/javascript" src="script.js"></script>
  23. </head>
  24. <body>
  25. <form action="suite.php" method="post">
  26. <?php
  27. //on crée les variables en provenance du formulaire
  28. extract ($_POST[)
  29.  
  30. $Password=trim(stripslashes($Password));
  31. $Nom=stripslashes($Nom);
  32. //Mise en majuscule du nom pour comparaison avec la base de données
  33. echo "strtoupper($txt)";
  34.  
  35. //preparation de la requete pour interoger la bdd
  36. $Sql="SELECT `Nom` , `Prenom` , `Password` FROM sergentberthet WHERE ";
  37. //on envoi la requete
  38. $Reponse = mysql_querry($Sql, $ConnexionServeur);
  39. $NbLignes = mysql_num_rows($Reponse);
  40.  
  41. //Combien de lignes correspondent
  42. if ($NbLignes==0)
  43. {
  44. session_destroy();
  45. echo "<p>utilisateur inconnu! Essayez à nouveau.</p>\n";
  46. echo "<p>Vous allez retrouver le formulaire dans 2 secondes</p>\n";
  47. echo "<script type= 'text/javascript'>\n";
  48. echo "setTimeout(\"document.location.replace('authentification.html')\",2000);\n";
  49. echo "</script>\n";
  50. }
  51. else
  52. {
  53. $LigneReponse=mysql_fetch_array($Reponse, MYSQL_ASSOC);
  54. $_SESSION['NomUtilisateur']=$Nom;
  55. $_SESSION['IdUtilisateur']=$LigneReponse['id'];
  56.  
  57. echo "<script type= 'text/javascript'>\n";
  58. echo "document.location.replace('suite.php');\n";
  59. echo "</script>\n";
  60. }
  61. //Fermeture de la connexion au serveur mysql
  62. mysql_close($ConnexionServeur);
  63. ?>
  64.  
  65. <p class="align-droite"></p>
  66. </form>
  67. </body>
  68. </html>



Le problème, c'est qu'une fois rempli, le formulaire ne donne rien, je ne sais pas si ce sont mes deux programmes qui ne communiquent pas, ou si il y a des erreurs.
j'aimerais que si l'authentification est bonne, on me redirige sur google, mais si elle ne l'est pas, que je retourne sur mon formulaire.
Je vous remercie d'avance pour votre aide

Autres pages sur : authentification php

12 Mai 2009 11:18:15

salut, je ne suis pas très bon en web mais
  1. echo "<script type= 'text/javascript'>\n";
  2. echo "setTimeout(\"document.location.replace('authentification.html')\",2000);\n";
  3. echo "</script>\n";


me parait byzarre de mélanger du php et du javascript.
sinon pour le retour du formulaire tu n'as qu'a faire
  1. echo "authentification refusée";
  2. include("formulaire.html");

et la redirection google :
  1. header("Location: www.google.fr");

12 Mai 2009 11:26:58

voila la communication se fait entre les deux si j'ouvre le formulaire par firefox mais pas par internet explorer, si tu sais pourquoi?

de plus, avec firefox, il me met un message:
utilisateur inconnu! Essayez à nouveau.\n"; echo "

Vous allez retrouver le formulaire dans 2 secondes
  1. \n"; echo "\n"; } else { $LigneReponse=mysql_fetch_array($Reponse, MYSQL_ASSOC); $_SESSION['NomUtilisateur']=$Nom; $_SESSION['IdUtilisateur']=$LigneReponse['id']; echo "\n"; } //Fermeture de la connexion au serveur mysql mysql_close($ConnexionServeur); ?>


alors que le login et le mot de passe son bon

Sinon je vais rajouter ton idée, mais je pourrais pas la tester tant que l'authentification ne se fait pas
Contenus similaires
12 Mai 2009 12:18:01

J'ai modifier mon second programme:




  1. //Combien de lignes correspondent
  2. <?
  3. if ($NbLignes==0)
  4. {
  5. echo "<meta http-equiv='refresh' content='0; url=Formulaire.html'>";
  6. }
  7. else
  8. {
  9. echo "<meta http-equiv='refresh' content='0; url=http://www.google.fr'>";
  10. }
  11. ?>




Le probleme c'est qu'avec firefox, ca m'ouvre google directement, meme avec un login et mo de passe erronné. et avec internet explorer, meme avec de bon login et password, je reste sur mon formulaire.
12 Mai 2009 13:17:15

si tu reste sur le formulaire sans aucun message d'erreur c'est probablement que t'as une couille dans le javascript.
je comprend pas un truc c'est pourquoi la partie bdd dans ton 2ème programme est dans un formulaire?ton validation.php ne devrait meme pas avoir de html puisque tout ce qu'elle fait c'est redirigé sur google ou renvoyer le formulaire.
ensuite si t'arrive direct sur google quoi qu'il arrive c'est forcément que ton select ne trouve rien, autrement dit la requête est mal faite.

petite maquette rapide :
formulaire.html
ton formulaire pas de problème

validation.php
  1. extract($_post);
  2. $connexion=mysql_connect($host, $log, $passe);
  3. mysql_select_db($base);
  4. //on récupère les champs login et password en évitant les caractères html
  5. $pseudo=htmlspecialchars($_POST['login']);
  6. $password=htmlspecialchars($_POST['password']);
  7. //récupération des informations du membre par rapport au pseudo entré
  8. $query="SELECT password FROM membre where pseudo='$pseudo'";
  9. $resultat=mysql_query($query, $connexion);
  10. $donnees=mysql_fetch_array($resultat);
  11. //comparaison du mot de passe entré et du mot de passe en base(hashage)
  12. //si bon mot de passe
  13. if($password==$donnees['password])
  14. //redirige vers google
  15. header("Location:google.fr");
  16. else
  17. {
  18. echo "pas bon";
  19. include("formulaire.html");
  20. }


je l'ai fait assez rapide j'espère que c'est assez clair.
je te conseille de virer tout ton javascript puisque il ne sert pas pour l'authentification.

tiens nous au courant
12 Mai 2009 13:57:45

Je pense avoir suivi a peu pres ce que tu m'a dit:
  1. <?php
  2.  
  3. //Connection au serveur MYsql et à la Bdd
  4. $mysql_hostname="localhost:8080";
  5. $mysql_username = "root";
  6. $mysql_password = "";
  7. $mysql_basename = "sergentberthet";
  8.  
  9. //on crée les variables en provenance du formulaire
  10. extract ($_POST)
  11. $ConnexionServeur = mysql_connect($mysql_hostname, $mysql_username, $mysql_password );
  12. $ConnexionBdd = mysql_select_db($mysql_basename, $ConnexionServeur);
  13.  
  14. $Password=htmlspecialchar($_POPST['Password']));
  15. $Nom=htmlspecialchar($_POST['Nom']);
  16. $Prenom=htmlspecialchar($_POST['Prenom']);
  17. //Mise en majuscule du nom pour comparaison avec la base de données
  18. //echo "strtoupper($txt)";
  19.  
  20. $Sql="SELECT Nom, Prenom, Password FROM motdepasse";
  21. //on envoi la requete
  22. $Reponse = mysql_querry($Sql, $ConnexionServeur);
  23. $donnees=mysql_fetch_array($Reponse);
  24.  
  25. //comparaison du mot de passe entré et du mot de passe bdd
  26. if($Password==$donees['Password'])
  27. header("Location:google.fr");
  28. else
  29. {
  30. echo "Mauvaise identification";
  31. include("Formulaire.html");
  32. }
  33.  
  34. ?>


mais ça ne fonctionne toujours pas, mon fichier validation s'ouvre et m'affiche une page blanche.
Je pense qu'il doit y avoir un problème au niveau du if ou de la connexion à la bdd.
je n'y connais pas grand chose mais merci déjà pour ton aide
12 Mai 2009 14:05:28

ah je vois, en fait c'est ta requete
tu dois récupérer le mot de passe la ou le pseudo entré est le meme que le pseudo en bdd
donc
SELECT Nom, Prenom, Password FROM motdepasse where champ_nom_de_ta_bdd=$Nom AND champ_prenom_de_ta_bdd=$Prenom";
la ca devrait etre mieux
12 Mai 2009 14:32:10

J'ai toujours une page blanche
12 Mai 2009 14:42:24

oh oh tu dois avoir une variable pourri quelque part qui est vide
vérifie bien tous les noms de variables
au dessus je vois par exemple :
if($Password==$donees['Password'])
alors qu'au dessus donees a un "n" de plus :) 
12 Mai 2009 15:13:45

J'ai corrigé mon probleme, mais meme avec des login ok ou non, j'obtient toujours une page blanche
12 Mai 2009 15:26:32

il faut que tu débug le bordel en faisant des echo "test" a divers endroits du programme pour s'approcher du plantage.
par exemple au lieu de faire ton header fais un echo "test" pour voir si ça s'affiche
12 Mai 2009 15:32:46

Je ne sais pas trop ou mettre ce test, ni de la façon dont il s'écrit, je ne l'ai jamais utilisé
12 Mai 2009 15:40:43

bon je l'ai refais t'as fais pas mal de fautes en faites mais aucune méchante c'est juste des fautes de frappe
formulaire :
  1. <html>
  2. <body>
  3. <p>Saisissez vos Nom et mot de passe pour vous identifier: </p>
  4. <form action="validation.php" method="post">
  5. <table border="0">
  6. <tr>
  7. <td>Nom:</td>
  8. <td><input type="text" name="Nom" size="25" class="majuscule" /></td>
  9. </tr>
  10. <tr>
  11. <td>Prenom:</td>
  12. <td><input type="text" name="Prenom" size="25"/></td>
  13. </tr>
  14. <tr>
  15. <td>Mot de passe:</td>
  16. <td><input type="password" name="Password" size="10"/></td>
  17. </tr>
  18. </table>
  19. <p><input type="submit" name="Valider" value="Valider"/></p>
  20. </form>
  21.  
  22.  
  23. </body>
  24. </html>


validation :
  1. <?php
  2.  
  3.  
  4. //on crée les variables en provenance du formulaire
  5. extract ($_POST) ;
  6. ta connexion a la bdd
  7.  
  8. $Password=htmlspecialchars($_POST['Password']);
  9. $Nom=htmlspecialchars($_POST['Nom']);
  10. $Prenom=htmlspecialchars($_POST['Prenom']);
  11. //Mise en majuscule du nom pour comparaison avec la base de données
  12. //echo "strtoupper($txt)";
  13.  
  14. $Sql="SELECT nom, prenom, password FROM motdepasse where nom='$Nom' AND prenom='$Prenom'";
  15. //on envoi la requete
  16. $Reponse = mysql_query($Sql, $connexion);
  17. $donnees=mysql_fetch_array($Reponse);
  18.  
  19. //comparaison du mot de passe entré et du mot de passe bdd
  20. if($Password==$donnees['password'])
  21. header("Location: http://www.google.fr" );
  22. else
  23. {
  24. echo "Mauvaise identification";
  25. include("form.html" );
  26. }
  27.  
  28. ?>


change les noms biensur puisque je n'ai pas tout à fait les memes noms que toi genre validation.php et non Validation.php etc
ça marche chez moi
12 Mai 2009 15:53:58

J'ai corrigé mes erreurs, mais la ca ne marche toujours pas, je vais verifier dans phpmyadmin, si ce n'est pas un probleme sur la bdd directement
12 Mai 2009 16:00:41

mais tu as une page toute blanche??
parce que quand j'ai récupéré ton code j'avais pleins d'erreurs de syntaxe php.
si c'était la bdd je pense que t'aurais une erreur à la connexion et si il ne trouve pas les mots de passe il afficherais au moins le formulaire.
regarde bien que c'est au bon fichier que t'envoie le formulaire.
moi ça marche donc c'est obligé qu'il te reste une petite faute.
reposte les codes des 2 fichiers que t'a corrigé que je regarde s'il reste une merde
12 Mai 2009 16:05:44

A ta premiere question, je repondrais oui, j'ai une page toute blanche avec comme url l'adresse de mon fichier validation3.php

voila mes deux codes apres correction:

formulaire:

  1. <body>
  2. <p>Saisissez vos Nom et mot de passe pour vous identifier: </p>
  3. <form action="Validation3.php" method="post">
  4. <table border="0">
  5. <tr>
  6. <td>Nom:</td>
  7. <td><input type="text" name="Nom" size="25" class="majuscule" /></td>
  8. </tr>
  9. <tr>
  10. <td>Prenom:</td>
  11. <td><input type="text" name="Prenom" size="25"/></td>
  12. </tr>
  13. <tr>
  14. <td>Mot de passe:</td>
  15. <td><input type="password" name="Password" size="10"/></td>
  16. </tr>
  17. </table>
  18. <p><input type="submit" name="Valider" value="Valider"/></p>
  19. </form>
  20.  
  21.  
  22. </body>







Validation3:


  1. <?php
  2.  
  3. //Connection au serveur MYsql et à la Bdd
  4. $mysql_hostname="localhost:8080";
  5. $mysql_username = "root";
  6. $mysql_password = "";
  7. $mysql_basename = "sergentberthet";
  8.  
  9. //on crée les variables en provenance du formulaire
  10. extract ($_POST)
  11. $ConnexionServeur = mysql_connect($mysql_hostname, $mysql_username, $mysql_password );
  12. $ConnexionBdd = mysql_select_db($mysql_basename, $ConnexionServeur);
  13.  
  14. $Password=htmlspecialchars($_POST['Password']);
  15. $Nom=htmlspecialchars($_POST['Nom']);
  16. $Prenom=htmlspecialchars($_POST['Prenom']);
  17. //Mise en majuscule du nom pour comparaison avec la base de données
  18. //echo "strtoupper($txt)";
  19.  
  20. $Sql="SELECT Nom, Prenom, Password FROM motdepasse where nom='$Nom' AND prenom='$Prenom'";
  21. //on envoi la requete
  22. $Reponse = mysql_querry($Sql, $ConnexionServeur);
  23. $donnees=mysql_fetch_array($Reponse);
  24.  
  25. //comparaison du mot de passe entré et du mot de passe bdd
  26. if($Password==$donnees['Password'])
  27. header("Location:http://www.google.fr");
  28. else
  29. {
  30. echo "Mauvaise identification";
  31. include("Formulaire.html");
  32. }
  33.  
  34. ?>



Merci de me consacrer ce temps et de me répondre aussi vite
12 Mai 2009 16:13:37

dans ta requête select :
$Sql="SELECT Nom, Prenom, Password FROM motdepasse where nom='$Nom' AND prenom='$Prenom'";
tu fais select de truc avec majuscule en première lettre puis where truc sans majuscule. je ne sais pas si mysql y est sensible mais : dans ta base je ne sais pas si tu as mis les majuscules mais si oui ensuite met les partout.
un truc aussi c'est que à extract($_POST) il manque le point virgule et la c'est impossible que ça n'affiche pas d'erreur.
si le formulaire est bien envoyé au bon fichier, dis moi tu utilise quoi pour coder?et quel logiciel avec php apache et phpmyadmin?wamp?easyphp?
12 Mai 2009 16:18:50

Ca ne va pas mieu, mais j'utilise wamp, et j'ai en parallèle un serveur iis, mais apache est configuré sur le port 8080, il n'y a donc pas de conflit, mais peut etre un probleme de connexion, je n'ai peut etre pas besoin d'utiliser apache.
Sinon j'ecrit mon code sous pspad editor
12 Mai 2009 16:23:30

il doit y avoir un gros conflit parce que il te reste des erreurs de syntaxe, le préprocesseur PHP ne fonctionne pas sinon en exécutant ton code tu aurais déjà :
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\gestion09\validation3.php on line 11
c'est obligé que tu ait l'erreur mais ton php ne marche pas donc tu obtiens une page blanche. Il faut que tu utilise juste wamp comme moi et yaura aucun problème. Sinon si tu veux pas virer ton autre serveur je ne sais pas comment régler ça
12 Mai 2009 16:26:04

Merci beaucoup pour tono aide, je dois garder mon serveur iis a cause d'application en asp, mais je vais essayer de trouver une solution, maintenant que je sais qu'il me reste que quelques erreurs et que php ne fonctionne pas.
Merci pour tout ce temps passé à m'aider
12 Mai 2009 16:29:30

de rien mon brave mais on a mis du temps avant de comprendre un truc tout bête! :) 
13 Mai 2009 08:44:08

C'est de ma faute si on a mis tout ce temps, j'aurai du y penser plus tot.
J'ai trouver un tuto pour installer php sur iis:

http://www.sbsfr.org/index.php?page=PHPsurXP

Donc je vais essayer et si ca marche je mettrais un petit post que tout le monde soit au courant.
Merci pour ton aide
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS