- Je n'arrive pas a me connecter avec ce code.
- Se connecter à gmail sur téléphone - Guide
- Code ascii de a - Guide
- Comment connecter chromecast à la télé - Guide
- Se connecter à ma boite hotmail - Guide
- Code puk bloqué - Guide
5 réponses
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"; } }
Bonjour,
$cosql= $bdd ->prepare('SELECT * FROM users WHERE eamil = ? AND mdp = ? ');
"WHERE eamil" ou "WHERE email" ?
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
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(); }
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é.
15 févr. 2025 à 12:34
et pour la question que j'ai posé en premier c'est quoi la solution????
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...
je viens d'essayer rien ne se passe, il n'y a pas de message d'erreur.
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 ?
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>
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionj'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>
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...