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

ade - Modifié le 15 févr. 2025 à 13:29
 ade - 23 févr. 2025 à 16:23
 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

A voir également:

5 réponses

jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
15 févr. 2025 à 15:32

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

Bonjour,

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

"WHERE eamil" ou "WHERE email" ?

0

email j'ai corrigé mais le probleme persiste.

0
jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
13 févr. 2025 à 22:58

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

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

excuse j'avais oublié , dois je mettre mon code a l'interieur de la balise try ????

0
jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740 > ade
14 févr. 2025 à 21:07

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
ade > jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025
15 févr. 2025 à 12:34

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

0
jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740 > ade
15 févr. 2025 à 13:26

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

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

0
jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
16 févr. 2025 à 16:01

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
ade > jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025
18 févr. 2025 à 14:13

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
jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740 > ade
18 févr. 2025 à 23:30

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

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

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

merci.

0
jordane45 Messages postés 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
20 févr. 2025 à 17:56

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