Résolu Pbm authentification php

Solutions (7)
Tags :
  • Php
  • Programmation
|
bonjour
j ai un problème avec mon code php pour la page d'authentification. si quelqu'un peut m aider à m en sortir sa serait vraiment sympa pasque sa fé trois jours que j suis dessus et j trouve pas la solution


voici mon code:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <?php
  9. require_once("fonctionsSQL.php");
  10. error_reporting(E_ALL);
  11.  
  12.  
  13. /*********************************************************************************************************************/
  14. /* formAuthentification() */
  15. /* Affiche le formulaire de la page d'authentification */
  16. /* paramètres d'entrée : $ $msg : message d'erreur à afficher, "" par défaut */
  17. /* paramètres de sortie : / */
  18. /*********************************************************************************************************************/
  19. function formAuthentification ($msg="") {
  20. echo '<font style="color:red; font-weight:bold;">'.$msg."</font><br/>";
  21.  
  22. ?>
  23.  
  24. <center><div id="globalAuth">
  25. <a href="accueil.php"> Retour accueil </a>
  26. <p>Vous devez vous identifier pour acceder à l espace administration</p>
  27. <div>
  28. <form method="post" action="auth.php" >
  29. <fieldset>
  30. <legend align="center" >Connexion</legend>
  31. <label for="nomConnexion">Nom administrateur: </label>
  32. <input type="text" id="nomConnexion" name="nomConnexion" tabindex="1" />
  33. <label for="motPasse">        Mot de passe : </label>
  34. <input type="password" id="motPasse" name="motPasse" tabindex="2" /><br/><br/>
  35. </fieldset>
  36. <p>
  37. <input type="submit" id="btnvalid" value="ENTRER"/>
  38. <input type="reset" id="btnreset" value="Annuler"/>
  39. </p>
  40.  
  41.  
  42. </form>
  43. </div>
  44. </div></center>
  45.  
  46. <?php
  47. }
  48.  
  49.  
  50. /*********************************************************************************************************************/
  51. /* testFormAuth() */
  52. /* Test si les données du formulaire d'authentification ont été correctement envoyées */
  53. /* paramètres d'entrée : / */
  54. /* paramètres de sortie : true si $_POST est correct, false sinon */
  55. /*********************************************************************************************************************/
  56. function testFormAuth (){
  57. if (isset($_POST["nomConnexion"])&& isset($_POST["motPasse"]) ) {
  58. return true;
  59. }
  60. else {
  61. return false;
  62. }
  63. }
  64. /*********************************************************************************************************************/
  65. /* verifFormAuth() */
  66. /* Vérifie si les données du formulaire d authentification sont cohérentes */
  67. /* paramètres d'entrée : / */
  68. /* paramètres de sortie : $msg */
  69. /*********************************************************************************************************************/
  70. function verifFormAuth () {
  71.  
  72. $msg=NULL;
  73. if (empty($_POST["nomConnexion"])) {
  74. $msg="Vous devez saisir votre login \n <br />";
  75. }
  76. if (empty($_POST["motPasse"])) {
  77. $msg="Vous devez saisir votre mot de passe \n <br />";
  78. }
  79. if ((empty($_POST["nomConnexion"])) and (empty($_POST["motPasse"])) ){
  80. $msg="Vous devez saisir vos identifiants \n <br />";
  81. }
  82. return($msg);
  83. }
  84.  
  85. /***********************************************************************************************************************/
  86. /******************************programme principale********************************************************************/
  87. /*********************************************************************************************************************/
  88. //si les données posté sont correct
  89. if (testFormAuth()) {
  90. //on verifies si elles sont cohérentes
  91. $msg=verifFormAuth();
  92. if ($msg==NULL) {
  93. //on recupere le login et le mot de passe de l administrateur
  94. $nomConnexion=$_POST["nomConnexion"];
  95. $motPasse=$_POST["motPasse"];
  96.  
  97. //connexion a la base de données
  98. $connex=connexionBd('localhost','root','','cecourteline');
  99. if ($connex) {
  100. $requete = "SELECT nomConnexion,motPasse FROM administrateur WHERE nomConnexion=$nomConnexion AND motPasse=$motPasse ";
  101. $resultat= mysql_query($requete);
  102. if (mysql_num_rows($resultat) == 0) {
  103. $msg="vos identifiants sont incorrects,vous pouvez réessayer ou retourner à la page d'accueil du site";
  104. formAuthentification ($msg);
  105. }
  106. else{
  107. session_start();
  108. header("Location:creerAdministrateur.php" );
  109.  
  110. }
  111. deconnexion ($connex);
  112. }
  113. else {
  114. $msg="Problème de connexion à la base de données. Veuillez réessayer ultérieurement";
  115. formAuthentification ($msg);
  116. }
  117. }
  118. else {
  119. formAuthentification ($msg);
  120. }
  121.  
  122. }
  123. else {
  124. formAuthentification ();
  125. }
  126.  
  127.  
  128.  
  129.  
  130.  
  131. ?>
  132. </body>
  133. </html>





et mes fonctions sql que g mis a part (fonctionsSQL.php):
  1. <?php
  2. /*********************************************************************************************************************/
  3. /* connexionBd($serveur,$login,$mdp,$bd) */
  4. /* fonction de connexion à une base de données */
  5. /* paramètres d'entrée : $serveur : nom du serveur de base de onnées auquel on veut se connecter */
  6. /* $login : nom de connexion au serveur */
  7. /* $mdp : mot de passe du login de connexion adu serveur */
  8. /* $bd : nom de la base de données à laquelle on veut se connecter */
  9. /* paramètres de sortie : $connexion est l'identifiant de connexion MySQL en cas de succès ou FALSE si une erreur survient. */
  10. /*********************************************************************************************************************/
  11. function connexionBd($serveur,$login,$mdp,$bd) {
  12. $connexion = mysql_connect($serveur, $login, $mdp) ;
  13. if ($connexion <=0) die ("Connexion impossible au serveur $serveur avec le login $login et le mot de passe $mdp");
  14. mysql_set_charset('utf8', $connexion);
  15.  
  16. mysql_select_db($bd, $connexion) or die("Connexion impossible à la base $bd");
  17.  
  18. return ($connexion);
  19. }
  20.  
  21. /*********************************************************************************************************************/
  22. /* deconnexion ($connexion) */
  23. /* fonction de déconnexion d'une base de données */
  24. /* paramètres d'entrée : $connexion : identifiant de la connexion MYSQL à fermer */
  25. /* paramètres de sortie : / */
  26. /*********************************************************************************************************************/
  27. function deconnexion ($connexion) {
  28. mysql_close($connexion);
  29. }
  30. ?>




le probleme c que depuis tout ce temps je recois sa comme message d'erreur:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\stage\auth.php on line 102
vos identifiants sont incorrects,vous pouvez réessayer ou retourner à la page d'accueil du site



merci de bien vouloir m aider...
Contenus similaires
Meilleure solution
partage
, Maître Yoda |
bonjour, bon alors il y a un truc qui me choque énormément, ton session_start(), ne jamais le placer ici, toujours le placer tout en haut du fichier php. Donc à la place de ton session_start(), tu met :
$_SESSION['Utilisateur']=$nomConnexion;
Cela permet de stocker le login de l'utilisateur (en espèrent que dans ta table, tu précise bien que le Login est unique, et par conséquent, personne ne peut avoir le même login qu'un autre). Puis pour afficher le login suffit d'utiliser la variable de session $_SESSION['Utilisateur'].

puis pour te déconnecter, un simple :
unset($_SESSION['Utilisateur']
Cela va détruire ta variable de session contenant le login de l'utilisateur.

Donc je récapitule :
- session_start(); // Toujours le placer en haut de la page php
- $_SESSION['Utilisateur']=$nomConnexion; // Quand le login et le mot de passe sont bon, alors on créer une nouvelle variable de session, tu peux lui donner le nom que tu veux, ici c'est utilisateur, mais tu peux mettre n'importe quoi. Puis tu lui affecte le login ou id de l'utilisateur.
-unset($_SESSION['Utilisateur']); // Pour que l'utilisateur se déconnecte, en théorie, cela veut dire que tu supprimer la variable de session.

Personnellement je te conseil d'adopter une autre organisation de ton site.
Intéresse toi au design pattern MVC, tu verra tu y arrivera plus vite, tu sépare le comportement de l'interface.
  • Commenter cette solution |
Score
0
òh
òi
|
toham@idn a dit :
bonjour, bon alors il y a un truc qui me choque énormément, ton session_start(), ne jamais le placer ici, toujours le placer tout en haut du fichier php. Donc à la place de ton session_start(), tu met :
$_SESSION['Utilisateur']=$nomConnexion;
Cela permet de stocker le login de l'utilisateur (en espèrent que dans ta table, tu précise bien que le Login est unique, et par conséquent, personne ne peut avoir le même login qu'un autre). Puis pour afficher le login suffit d'utiliser la variable de session $_SESSION['Utilisateur'].

puis pour te déconnecter, un simple :
unset($_SESSION['Utilisateur']
Cela va détruire ta variable de session contenant le login de l'utilisateur.

Donc je récapitule :
- session_start(); // Toujours le placer en haut de la page php
- $_SESSION['Utilisateur']=$nomConnexion; // Quand le login et le mot de passe sont bon, alors on créer une nouvelle variable de session, tu peux lui donner le nom que tu veux, ici c'est utilisateur, mais tu peux mettre n'importe quoi. Puis tu lui affecte le login ou id de l'utilisateur.
-unset($_SESSION['Utilisateur']); // Pour que l'utilisateur se déconnecte, en théorie, cela veut dire que tu supprimer la variable de session.

Personnellement je te conseil d'adopter une autre organisation de ton site.
Intéresse toi au design pattern MVC, tu verra tu y arrivera plus vite, tu sépare le comportement de l'interface.



merci beaucoup, votre reponse m a beaucoup aidé ... j vais essayer de voir le design MVC pasque j connais pas encore trop
merci encore
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par boboAchanti.
  • Commenter cette réponse |
Score
0
òh
òi
|
crazycat@idn a dit :
Ca c'est normal: tu utilises mysql_real_escape_string() avant de te connecter à la base de données.

Comme expliqué dans la documentation:
Citation :
La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.


bonjour
merci pour ta reponse je pense que c 'etait sa l erreur...
j ai deplacé les lignes apres la connexion et le script ne genere plus l 'erreur, et en plaçant session start en haut du script sa marche tres bien
merci
  • Commenter cette réponse |
Score
0
òh
òi
|
Ca c'est normal: tu utilises mysql_real_escape_string() avant de te connecter à la base de données.

Comme expliqué dans la documentation:
Citation :
La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.
  • Commenter cette réponse |
Score
0
òh
òi
|
merci pour ton aide
j ai essayé ta solution mais je crois qu il y a un probleme avec la fonction mysql_real_escape_string

voici l'erreur que sa me retourne , j suis un peu novice dans la programmation et g pas encore l habitude dutiliser cette fonction du coup j vois pas d 'ou vient l erreur a partir de la:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\stage\auth.php on line 94

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\stage\auth.php on line 94

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in C:\wamp\www\stage\auth.php on line 95

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\stage\auth.php on line 95
vos identifiants sont incorrects,vous pouvez réessayer ou retourner à la page d'accueil du site

merci encore
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Ta requête SQL plante, il faut mettre des ' ' autour des valeurs. Et il faut aussi échapper les valeurs récupérées en POST.
  1. $nomConnexion= mysql_real_escape_string($_POST["nomConnexion"]);
  2. $motPasse=mysql_real_escape_string($_POST["motPasse"]);
  3. ...
  4. $requete = "SELECT nomConnexion,motPasse FROM administrateur WHERE nomConnexion='$nomConnexion' AND motPasse='$motPasse' ";
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

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