Je n'arrive pas a me connecter avec ce code.

 if(isset ($_POST['seconecter'])){
		 if(!empty ($_POST['coemail']) AND !empty($_POST['comdp'])){
			 $mdp2 = sha1($_POST['comdp']);
			 $cosql= $bdd ->prepare('SELECT * FROM users WHERE eamil = ? AND mdp = ? ');
			 $cosql-> execute (array($_POST['coemail'], $mdp));
		 } if($cosql->rowcount()==1){
			 echo "connexion  reussis!!!!!!";
		 } else{
			 echo"vous devez renseigner tout les champs";
		 }
		
	 else{
			 echo"identifiant incorect";
		 }
	 	
	  
	 }

Bonjour,


Windows / Chrome 109.0.0.0

5 réponses

  1. j'ai mis les bonne variable et toujours rien pas de connexion.

    <?php
    	  try{
    	$bdd = new PDO ("mysql:host=localhost;dbname=utilisateur;charset=utf8","root","");
    	$bdd ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    	echo"conection reussis";
    	
    	if (isset ($_POST['ok'])){
    		if(!empty ($_POST['prenom']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']) AND !empty($_POST['email'])){
    			
    		}else{
    			echo"vous devez remplir tout les champs";
    		}
    			
    			
    			if($_POST['mdp']== $_POST['mdp2']){
    				$mdp = sha1($_POST['comdp']);
    				$recup = $bdd->prepare('INSERT INTO users (prenom,mdp,email) VALUES (?,?,?)');
    				$recup->execute (array($_POST['prenom'] , $mdp , $_POST['email']));
    				if($recup->rowcount() == 1){
    					echo"nickel!";
    				}
    				
    			}else{
    				echo"les mot de passe ne sont pas identique";
    			
    		}
    	}
    	
    	
    	 if(isset ($_POST['seconecter'])){
    		 if(!empty ($_POST['coemail']) AND !empty($_POST['comdp'])){
    			$mdp = sha1($_POST['comdp']);
    			 $cosql= $bdd ->prepare('SELECT * FROM users WHERE email = ? AND comdp = ? ');
    			 $cosql-> execute (array($_POST['coemail'], $mdp));
    		 } if($cosql->rowcount()==1){
    			 echo "connexion  reussis!!!!!!";
    		 } 
    		
    	 else{
    			 echo"identifiant incorect";
    		 }
    		
    	 	
    	  
    	 }
    	}
    	
    	
    	catch(PDOException $e){
    		echo"erreur".$e->getMessage();
    	}
    	
    	
    	 ?>
    	<body>
    	<h1>inscription</h1>
    	<form method="POST" action="" align="center">
    	<label for="nom">votre prenom</label>
    	<input type="text" id="nom" name="prenom" placeholder="entrez votre prenom.." >
    	<br/><br/>
    	<label for="prenom">votre password</label>
    	<input type="password" id="prenom" name="mdp" placeholder="password" >
    	<br/><br/>
    	<label for="pseudo">seconde password</label>
    	<input type="password" name="mdp2" placeholder="pass"  >
    	<br/><br/>
    	<label for="email">votre email</label>
    	<input type="email" id="email" name="email" placeholder="entrez votre e-mail"  >
    	<br/><br/>
    	<input type="submit"  value="s'inscrir" name="ok">
    	</form>
    	<h1>connexion</h1>
    	<form>
    		<input type="email" name="coemail" placeholder="votre email">
    		<br/>
    		<input type="password" name="comdp" placeholder="votre password"><br/>
    		<input type="submit" name ="seconecter" value="se conecter">
    	</form>
    0
    1. Voir cette page pour comprendre le problème et la solution proposée à l'exemple 2 : 

      https://www.php.net/manual/fr/pdostatement.rowcount.php

      1
    2. Modérateur

      Ce qui est dommage ... c'est que j'ai pris le temps de t'écrire du code... et tu ne l'as même pas utilisé...

      Forcément.. ça marche moins bien...

      0
    3. @nono

      merci.

      0
  2. je viens d'essayer rien ne se passe, il n'y a pas de message d'erreur.

    0
    1. Modérateur

      montre-nous ton code complet y compris la partie HTML. 

      n'oublie pas de nous indiquer le nom des fichiers si tu en as plusieurs. 

      ajoute également un var_dump dans le code PHP et regarde ce que ça donne lorsque tu essayes de te connecter. 

      ps: as-tu bien fait la mise à jour de ton code y compris pour l'utilisation des fonctions password hash et password verify ?

      quelle version de php utilise tu ?

      0
    2. @jordane45

      j'utilise la version 5.5.12 de php et mon code est sur une seul page.

      	<?php
      	  try{
      	$bdd = new PDO ("mysql:host=localhost;dbname=utilisateur;charset=utf8","root","");
      	$bdd ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
      	echo"conection reussis";
      	
      	if (isset ($_POST['ok'])){
      		if(!empty ($_POST['prenom']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']) AND !empty($_POST['email'])){
      			
      		}else{
      			echo"vous devez remplir tout les champs";
      		}
      			
      			
      			if($_POST['mdp']== $_POST['mdp2']){
      				$mdp = passord_hash($_POST['mdp'], PASSWORD_DEFAULT);
      				$recup = $bdd->prepare('INSERT INTO users (prenom,mdp,email) VALUES (?,?,?)');
      				$recup->execute (array($_POST['prenom'] , $mdp , $_POST['email']));
      				if($recup->rowcount() == 1){
      					echo"nickel!";
      				}
      				
      			}else{
      				echo"les mot de passe ne sont pas identique";
      			
      		}
      	}
      	
      	
      	 if(isset ($_POST['seconecter'])){
      		 if(!empty ($_POST['coemail']) AND !empty($_POST['comdp'])){
      			$mdp = passord_hash($_POST['mdp'], PASSWORD_DEFAULT);
      			 $cosql= $bdd ->prepare('SELECT * FROM users WHERE email = ? AND mdp = ? ');
      			 $cosql-> execute (array($_POST['coemail'], $mdp));
      		 } if($cosql->rowcount()==1){
      			 echo "connexion  reussis!!!!!!";
      		 } 
      		
      	 else{
      			 echo"identifiant incorect";
      		 }
      		
      	 	
      	  
      	 }
      	}
      	
      	
      	catch(PDOException $e){
      		echo"erreur".$e->getMessage();
      	}
      	
      	
      	 ?>
      	<body>
      	<h1>inscription</h1>
      	<form method="POST" action="" align="center">
      	<label for="nom">votre prenom</label>
      	<input type="text" id="nom" name="prenom" placeholder="entrez votre prenom.." >
      	<br/><br/>
      	<label for="prenom">votre password</label>
      	<input type="password" id="prenom" name="mdp" placeholder="password" >
      	<br/><br/>
      	<label for="pseudo">seconde password</label>
      	<input type="password" name="mdp2" placeholder="pass"  >
      	<br/><br/>
      	<label for="email">votre email</label>
      	<input type="email" id="email" name="email" placeholder="entrez votre e-mail"  >
      	<br/><br/>
      	<input type="submit"  value="s'inscrir" name="ok">
      	</form>
      	<h1>connexion</h1>
      	<form>
      		<input type="email" name="coemail" placeholder="votre email">
      		<br/>
      		<input type="password" name="comdp" placeholder="votre password"><br/>
      		<input type="submit" name ="seconecter" value="se conecter">
      	</form>
      	
      0
    3. Modérateur
      @ade

      sachant que tu es en php 5, oublie les fonctions password_hash et reste avec du sha1.

      par contre, tu n'as visiblement utilisé aucun des codes que je t'ai donné...

      si tu regardes bien ton code, à mon avis, tu n'utilises pas les bonnes variables pour le mot de passe...

      au niveau de la connexion,un coup tu utilises comdp et après tu mets mdp

      0
  3. Modérateur

    En gros, ça devrait donner un truc du genre

    
    //Récupération PROPRE des variables AVANT de les utiliser
    // utilisation de !empty et de l'écriture ternaire
    $login = !empty($_POST['coemail']) ? $_POST['coemail'] : NULL;
    $password = !empty($_POST['comdp']) ? $_POST['comdp'] : NULL;
    
    
    if(isset ($_POST['seconecter'])){
      
      
      
      if($login && $password){
        $mdp = sha1($password); // A remplacer par : https://www.php.net/manual/en/function.password-hash.php
        
        $sql= 'SELECT * FROM users WHERE email = ? AND mdp = ? ';
       
        $datas = array($login, $mdp);
    
        //Execution de la requete
        try{
          $requete = $bdd -> prepare($sql) ;
          $requete->execute($datas) ;
          //On stocke le résultat de la requête dans un array
          $result = $requete->fetchAll(); // Toutes les lignes .. à remplacer par fetch() si tu n'en veux qu'une
        }catch(Exception $e){
          // en cas d'erreur :
           echo " Erreur ! ".$e->getMessage();
           echo " Les datas : " ;
          print_r($datas);
        }
    
        if(count($result) == 1){
          echo "connexion  reussis!!!!!!";
        }else{
          echo "Aucun utilisateur trouvé ou ... trop d'utilisateurs avec les mêmes identifiants ?!";
        }
    
      } else {
        echo"vous devez renseigner tout les champs";
      }
    
    }
    
    
    

    et si tu utilises les vraies fonctions prévues à ça dans php

    
    //Version avec utilisation de password_verify
    // NB : Il faudra réencoder tes passwords avec la fonction https://www.php.net/manual/en/function.password-hash.php
    
    if(isset ($_POST['seconecter'])){
      
      
      
      if($login && $password){
       
        $sql= 'SELECT * FROM users WHERE email = ?';
        $datas = array($login);
    
        //Execution de la requete
        try{
          $requete = $bdd -> prepare($sql) ;
          $requete->execute($datas) ;
          //On stocke le premier résultat de la requête dans un array
          $result = $requete->fetch();
        }catch(Exception $e){
          // en cas d'erreur :
           echo " Erreur ! ".$e->getMessage();
           echo " Les datas : " ;
          print_r($datas);
        }
    
        if(!empty($result)){
          $hash = $result['mdp'] ?? null ;
          if (password_verify($password, $hash)) {
            echo "connexion  reussis!!!!!!";
          }else{
            echo "Mauvais password";
          }
        } else {
            echo "Aucun utilisateur correspondant..";
        }
      } else {
        echo"vous devez renseigner tout les champs";
      }
    
    }
    

    1
    1. Modérateur

      bonjour 

      commence par appliquer ce qui est indiqué ici 

      https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

      nb: au passage, il ne faut plus utiliser le SHA1, SHA2 ou MD5 pour "crypter" les mots de passe...mais les fonctions PHP prévues pour gérer les mots de passe telles que password_verify et password_hash


      0
      1. c'est que je fais habituellement j'active l'affichage des erreurs PDO .

        	try{
        	$bdd = new PDO ("mysql:host=localhost;dbname=utilisateur;charset=utf8","root","");
        	$bdd ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        	echo"conection reussis";
        	}
        	catch(PDOException $e){
        		echo"erreur".$e->getMessage();
        	}
        0
      2. excuse j'avais oublié , dois je mettre mon code a l'interieur de la balise try ????

        0
      3. Modérateur
        @ade

        oui

        pas tout le code mais l'exécution de la requête tel que c'est montré dans le lien que je t'ai donné.

        0
      4. @jordane45

        et pour la question que j'ai posé en premier c'est quoi la solution????

        0
      5. Modérateur
        @ade

        de faire ce que je t'ai indiqué....  histoire qu'on puisse voir si il y a une erreur..

        sans ça,. faudra que je consulte ma boule de cristal...

        0
    2. Bonjour,

      $cosql= $bdd ->prepare('SELECT * FROM users WHERE eamil = ? AND mdp = ? ');

      "WHERE eamil" ou "WHERE email" ?

      0
      1. email j'ai corrigé mais le probleme persiste.

        0