Je n'arrive pas a me connecter avec ce code.
ade -
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
-
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"; } }
-
Bonjour,
$cosql= $bdd ->prepare('SELECT * FROM users WHERE eamil = ? AND mdp = ? ');"WHERE eamil" ou "WHERE email" ?
-
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
-
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(); } -
-
-
-
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 ?
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>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
-
-
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>