Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire de connexion PDO

    24 mars 2013 à 2:52:29

    Bonjour,

    Après avoir lu entièrement le tuto sur le site du zéro : "Comment créer un site web avec PHP et Mysql en PDO"

    Je n'arrive pas à trouver le problème de ma requête (Requête qui provient de ce tuto).

    J'ai une entrée dans ma BDD avec comme pseudo : admin et password : 181290.

    Je me connecte avec mon formulaire et la requête me dit : Vos identifiants sont incorrects !

    Alors que ce sont les bons... :euh:

    Je précise que le formulaire est envoyé en ajax, et qu'il n'y a pas d'erreur de ce côté là, sinon je n'aurais pas de message d'erreur provenant de la requête.

    <?php
    require('../include/functions.inc.php');
    
    $pseudo = $_POST['pseudo'];
    $pass = sha1($_POST['pass']);
    
    if (!empty($pseudo) && !empty($pass)) {
    	$req = $connect->prepare('SELECT id FROM wa_communaute WHERE pseudo = :pseudo AND pass = :pass');
    	$req->execute(array('pseudo' => $pseudo,'pass' => sha1($pass)));
    	$resultat = $req->fetch();
    	if (!$resultat) {
    		echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
    	}
    	else {
    		session_start();
    		$_SESSION['id'] = $resultat['id'];
    		$_SESSION['pseudo'] = $pseudo;
    		echo 'OK';
    	}
    } else {
    	echo '<div class="error-login">Veuillez remplir tous les champs !</div>';
    }
    ?>

    Merci d'avance ;)

    -
    Edité par nicolastual 24 mars 2013 à 2:54:11

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      24 mars 2013 à 17:31:01

       Tu "double" sha1 la variable $pass???

      -> Première fois lors de la déclaration en haut

      -> Seconde fois lors de la requête

      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2013 à 19:35:07

        Je dois en supprimer un ?

        Celui de ma déclaration ou de la requête ?

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 mars 2013 à 20:51:33

          Ben ça dépend de commnet tu les insère dans ta base de donnée!!! Je pense qu'un seul est suffistant; selon moi tu pourrais supprimer celui dans la requête.

          De plus, je te conseille après la requête :

          while ($resultat = $req->fetch())
          {
              if ($resultat['pseudo'] == $pseudo AND $resultat['pass'] == $pass) 
              {
                  session_start();
                  $_SESSION['id'] = $resultat['id'];
                  $_SESSION['pseudo'] = $pseudo;
                  echo 'OK';
              }
              else 
              {    
                  echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
              }
          }

          • Partager sur Facebook
          • Partager sur Twitter
            24 mars 2013 à 21:10:02

            Pourquoi une boucle ? Pourquoi recomparer les login/password après alors que c'est fait via la requête ? Tu as plusieurs utilisateurs avec le même login ? Il était bien mieux son code !

            --

            Tu supprimes celui [sha1] que tu veux, mais je te conseillerais d'éviter les variables intermédiaires déjà, en l'état, ça n'apporte rien et ça pourrait même te valoir des E_NOTICE.

            -
            Edité par julp 24 mars 2013 à 21:15:34

            • Partager sur Facebook
            • Partager sur Twitter
              24 mars 2013 à 21:52:29

              Qu'est ce que je dois modifier dans ma requête, parce que les solutions que vous proposez ne fonctionnent pas : 

              $pseudo = $_POST['pseudo'];
              $pass = sha1($_POST['password']);
              
              if (!empty($pseudo) && !empty($pass)) {
              	$req = $connect->prepare('SELECT id FROM wa_communaute WHERE pseudo = :pseudo AND pass = :pass');
              	$req->execute(array('pseudo' => $_POST['pseudo'],'pass' => $_POST['pass']));
              	$resultat = $req->fetch();
              	if (!$resultat) {
              		echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
              	}
              	else {
              		session_start();
              		$_SESSION['id'] = $resultat['id'];
              		$_SESSION['pseudo'] = $pseudo;
              		echo 'OK';
              	}
              } else {
              	echo '<div class="error-login">Veuillez remplir tous les champs !</div>';
              }

              Merci d'avance

              • Partager sur Facebook
              • Partager sur Twitter
                24 mars 2013 à 22:03:35

                Ton sha1 ne sert à rien là, tu ne réutilises pas $pass.

                C'est tout simplement : $req->execute(array('pseudo' => $_POST['pseudo'],'pass' => sha1($_POST['pass']))); Qu''il faut faire.

                • Partager sur Facebook
                • Partager sur Twitter
                  25 mars 2013 à 0:58:04

                  Voila mon nouveau code avec t'a requête que tu m'a donné : 

                  Mais ça ne fonctionne toujours pas :(

                  Je donne aussi mon formulaire de connexion + mon script ajax qui traite le formulaire (Normalement il ne devrait pas y avoir de problème dans le js) + le fichier de configuration pour se connecter à la base :

                  require('config.inc.php');
                  
                  $pseudo = $_POST['pseudo'];
                  $pass = $_POST['pass'];
                   
                  if (!empty($pseudo) && !empty($pass)) {
                      $req = $connect->prepare('SELECT id FROM wa_communaute WHERE pseudo = :pseudo AND pass = :pass');
                      $req->execute(array('pseudo' => $_POST['pseudo'],'pass' => sha1($_POST['pass'])));
                      $resultat = $req->fetch();
                      if (!$resultat) {
                          echo '<div class="error-login">Vos identifiants sont incorrects !</div>';
                      }
                      else {
                          session_start();
                          $_SESSION['id'] = $resultat['id'];
                          $_SESSION['pseudo'] = $pseudo;
                          echo 'OK';
                      }
                  } else {
                      echo '<div class="error-login">Veuillez remplir tous les champs !</div>';
                  }
                  $PARAM_serveur = '*************';
                  $PARAM_bdd = '*************';
                  $PARAM_login = '*************';
                  $PARAM_mdp = '*************';
                  $connect = new PDO('mysql:host='.$PARAM_serveur.';dbname='.$PARAM_bdd, $PARAM_login, $PARAM_mdp);
                  $connect->exec("SET CHARACTER SET utf8");
                  <div id="form-login">
                  							<form action="" onsubmit="return false" method="post" class="login">
                  								<table>
                  									<tr><td><div id="ajax_loading" style="display:none;"><img src="../img/loading0.gif" alt="" height="20" width="20"></div></td></tr>
                  									<tr><td><label class="label-login">Nom d'utilisateur</label></td></tr>
                  									<tr><td><input type="text" name="pseudo" id="pseudo" class="input-login" maxlength="23" /></td></tr>
                  									<tr><td><label class="label-login">Mot de passe</label></td></tr>
                  									<tr><td><input type="password" name="pass" id="pass" class="input-login" maxlength="30" /></td></tr>
                  									<tr><td>
                  										<input type="checkbox" class="check-login" id="check-login" />
                  										<label for="check-login" class="check-login">Rester connecté</label>
                  										<span>|</span>
                  										<p class="size11 inline-bk"><a href="">Identifiants oubliés</a></p>
                  									</td></tr>
                  									<tr><td>
                  										<label class="uiButton uiButtonlogin uiButtonloginConfirm" id="login" for="submit-login">
                  											<input type="submit" class="submit-login" id="submit-login" name="login" value="Connexion" />
                  										</label>
                  									</td></tr>
                  									<tr><td><div id="result" style="display:none;"></div></td></tr>
                  								</table>
                  							</form>
                  							<script type="text/javascript">J(document).ready(function(){ window.onload=function(){ J('input#pseudo').focus(); } });</script>
                  						</div>
                  J("form.register").submit(function () {
                      J('#ajax_loading1').show();
                      var str1 = J(this).serialize();
                      setTimeout(function () {
                          J.ajax({
                              type: "POST",
                              url: "../ajax/register.php",
                              data: str1,
                              success: function (msg1) {
                                  J("#form-register").ajaxComplete(function (event, request, settings) {
                                      J('#register').show();
                                      J('#ajax_loading1').hide();
                                      if (msg1 == 'OK') {
                                          var result1 = 'Vous êtes bien inscrit !' + '<br />' + 'Redirection automatique, veuillez patientez...';
                                          J(this).html(result1);
                                          setTimeout(function () {
                                              window.location = '../index.php';
                                          }, 3000);
                                      } else {
                                          var result1 = msg1;
                                          J('#result1').fadeIn();
                                          J('#result1').html(result1);
                                      }
                                  });
                              }
                          });
                      }, 2000);
                      setTimeout(function () {
                          J('#result1').fadeOut(100);
                      }, 5000);
                  });

                  Merci d'avance

                  -
                  Edité par nicolastual 25 mars 2013 à 1:02:05

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 mars 2013 à 1:43:21

                    La question est de savoir si le mot de passe enregistre dans la base est crypte ? Parce-que le code semble correcte !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 mars 2013 à 15:40:39

                      Oui le mot de passe est crypté dans ma base en sha1
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Formulaire de connexion PDO

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown