Impossible de vérifier si l'email existe déjà
bouboualba
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
bonjour
je vien vers vous car je suis confronter a un petit souci
en effet j'essaye de verifier une adresse mail sa ne marche pas
la page se redirige quand meme et l'adresse s'ajoute quand meme
dans la base de donné
voici mon code:
il ne me sort pas d'erreur mais ne merche pas non plus
merci codialement
je vien vers vous car je suis confronter a un petit souci
en effet j'essaye de verifier une adresse mail sa ne marche pas
la page se redirige quand meme et l'adresse s'ajoute quand meme
dans la base de donné
voici mon code:
<?php
$bdd=new PDO('mysql:host=localhost;dbname=test3','root','root');
if(isset($_POST['bouton']))
{
if(!empty($_POST['mail']) and !empty($_POST['mdp']) and !empty($_POST['mdp2']))
{
$mail=$_POST['mail'];
$mdp=$_POST['mdp'];
$mdp2=$_POST['mdp2'];
if(strlen($_POST['mail'])<=20)
{
$reqmail=$bdd->prepare("SELECT * FROM tables WHERE email = ?)");
$reqmail->execute(array($mail));
$mailexist=$reqmail->rowcount();
if($mailexist==0)
{
if($mdp==$mdp2)
{
$insertmbr=$bdd->prepare("INSERT INTO tables(email,mdp)VALUES(?,?)");
$insertmbr->execute(array($mail,$mdp));
header('location:verif.php');
}
else
{
echo"vos mot de passe ne correspondent pas";
}
}
else
{
echo"votre mail existe deja";
}
}
else
{
echo"votre email depasse les 20 caractere";
}
}
else
{
echo"veuillez remplir tous le formulaire";
}
}
?>
<form method="post" action="">
<input type="email" name="mail" placeholder="votre email" />
<br />
<input type="password" name="mdp" placeholder="votre mot de passe" />
<br />
<input type="password" name="mdp2" placeholder="confirmer mdp" />
<br />
<input type="submit" name="bouton" value="s'inscrire" />
</form>
il ne me sort pas d'erreur mais ne merche pas non plus
merci codialement
A voir également:
- Impossible de vérifier si l'email existe déjà
- Comment creer un compte email - Guide
- Verifier compatibilite windows 11 - Guide
- Vérifier si mot de passe piraté - Guide
- Vérifier si une phrase est correcte - Accueil - Google
- Verifier un lien - Guide
1 réponse
Bonjour,
Plusieurs choses ne vont pas dans ton code.
Déjà.. il faut activer la gestion des erreurs PDO et de PHP
Ensuite, RowCount ne s'utilise pas (en pdo) sur une requête SELECT.
De plus, on place le code de connexion dans un fichier à part qu'on a juste à inclure dans les pages où on en a besoin.... au lieu de le réécrire (au risque de se tromper) dans chaque page.
Voici ton code corrigé
Fichier de connexion à la bdd :
Ton fichier :
Je t'invite au passage à lire et à appliquer TOUT ce qui se trouve dans les liens suivants:
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ainsi qu'une explication pour poster correctement ton code à l'avenir :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Pour finir... on ne stocke JAMAIS les password en clair dans la BDD.
On va les "hasher"....
Pour se faire, on va utiliser les fonctions de php : password_hash() et pour le vérifier : password_verify()
http://php.net/manual/fr/function.password-hash.php
https://www.php.net/manual/fr/function.password-verify.php
et quand tu voudras vérifier si l'utilisateur peut se connecter un truc du genre :
Plusieurs choses ne vont pas dans ton code.
Déjà.. il faut activer la gestion des erreurs PDO et de PHP
Ensuite, RowCount ne s'utilise pas (en pdo) sur une requête SELECT.
De plus, on place le code de connexion dans un fichier à part qu'on a juste à inclure dans les pages où on en a besoin.... au lieu de le réécrire (au risque de se tromper) dans chaque page.
Voici ton code corrigé
Fichier de connexion à la bdd :
<?php //fichier cnxBdd.php try{ $bdd =new PDO('mysql:host=localhost;dbname=test3; charset=utf8', 'root', 'root'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
Ton fichier :
<?php //--------------------------------------------------------// //Activation de l'affichage des erreurs PHP //--------------------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //--------------------------------------------------------// //connexion à la bdd et activation de la gestion des erreurs PDO //--------------------------------------------------------// require_once "cnxBdd.php"; //--------------------------------------------------------// //récupération PROPRE des variables AVANT de les utiliser //--------------------------------------------------------// $mail = !empty($_POST['mail']) ? $_POST['mail'] : NULL; $mdp = !empty($_POST['mdp']) ? $_POST['mdp'] : NULL; $mdp2 = !empty($_POST['mdp2']) ? $_POST['mdp2'] : NULL; if(isset($_POST['bouton'])){ if($mail && $mdp && $mdp2){ if(strlen($mail)<=20){ try{ $reqmail=$bdd->prepare("SELECT * FROM tables WHERE email = ?)"); $reqmail->execute(array($mail)); $result = $reqmail->fetchAll(); //on stocke le resultat dans un array $mailexist = !empty($result) ? true : false; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } if(!$mailexist) { if($mdp==$mdp2) { try{ $insertmbr=$bdd->prepare("INSERT INTO tables(email,mdp)VALUES(?,?)"); if( $insertmbr->execute(array($mail,$mdp))){ header('location:verif.php'); exit(); } }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); } } else { echo"vos mot de passe ne correspondent pas"; } } else { echo"votre mail existe deja"; } } else { echo"votre email depasse les 20 caractere"; } } else { echo"veuillez remplir tous le formulaire"; } } ?> <!doctype html> <html> <head> <meta charset="utf-8"> <title>Utiliser des API</title> </head> <body> <form method="post" action=""> <input type="email" name="mail" placeholder="votre email" value="<?php echo $mail;?>" /> <br /> <input type="password" name="mdp" placeholder="votre mot de passe" value="<?php echo $mdp;?>" /> <br /> <input type="password" name="mdp2" placeholder="confirmer mdp" value="<?php echo $mdp2;?>" /> <br /> <input type="submit" name="bouton" value="s'inscrire" /> </form> </body> </html>
Je t'invite au passage à lire et à appliquer TOUT ce qui se trouve dans les liens suivants:
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ainsi qu'une explication pour poster correctement ton code à l'avenir :
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Pour finir... on ne stocke JAMAIS les password en clair dans la BDD.
On va les "hasher"....
Pour se faire, on va utiliser les fonctions de php : password_hash() et pour le vérifier : password_verify()
http://php.net/manual/fr/function.password-hash.php
https://www.php.net/manual/fr/function.password-verify.php
try{ $password = password_hash($mdp, PASSWORD_DEFAULT); $insertmbr=$bdd->prepare("INSERT INTO tables(email,mdp)VALUES(?,?)"); if( $insertmbr->execute(array($mail,$password))){ header('location:verif.php'); exit(); } }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); }
et quand tu voudras vérifier si l'utilisateur peut se connecter un truc du genre :
$sql = "SELECT mdp FROM tables WHERE email = ?"; $datas = array($mail); try{ $prep = $bdd->prepare($sql); $prep->execute($datas); $result = $reqmail->fetch(); $mdp_frombdd = !empty($result) ? $result['mdp'] : NULL; if(password_verify($mdp, $mdp_frombdd){ echo "Password valide."; } }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); }