Vérifier si un émail existe déja dans la bdd
rika122
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
rika122 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
rika122 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour;
Je travaille sur un formulaire et là je dois vérifier si l'email existe déja dans ma base ou non,avant ce code marchait nickel (j'avais utilisé un pseudo) mais là il m'affiche toujours ke l'email existe déjà alors que réellement il n'est pas dans la base ,s'il vous plait si quelqu'un pourra m'aider .
voici le code
Je travaille sur un formulaire et là je dois vérifier si l'email existe déja dans ma base ou non,avant ce code marchait nickel (j'avais utilisé un pseudo) mais là il m'affiche toujours ke l'email existe déjà alors que réellement il n'est pas dans la base ,s'il vous plait si quelqu'un pourra m'aider .
voici le code
if(isset ($_POST['submit'])) { $TELLDEB=htmlentities(trim($_POST['TELDEB'])); $MAILDEB=htmlentities(trim($_POST['MAILDEB'])); $PSWDEB=htmlentities(trim($_POST['PSWDEB'])); $REPEATPSWDEB=htmlentities(trim($_POST['REPEATPSWDEB'])); //vérifier si les deux mot de passe sont identiques if($MAILDEB&&$PSWDEB&&$REPEATPSWDEB&&$NOMDEB&&$PRENDEB&&$ADRDEB&&$CPDEB&&$VILLEDEB&&$IBANDEB&&$BICDEB&&$TELDEB) { if ($PSWDEB==$REPEATPSWDEB) { $PSWDEB=sha1($PSWDEB); $connexion = new PDO('mysql:host=localhost;dbname=test', 'root', '') ; // connexion à la base de données $req1 = $connexion->prepare('SELECT MAILDEB FROM client'); $req1->execute(); if (isset($_POST['MAILDEB'])) { // Alors dans ce cas on met saisie du $_POST['MAILDEB'] dans la variable $MAILDEB $MAILDEB = htmlentities($_POST['MAILDEB']); // On insère la variable MAILDEB qui correspond à la saisie de l'utilisateur dans la requête SQL $req1 = $connexion->prepare("SELECT MAILDEB FROM client WHERE MAILDEB = \'':maildeb'\'OR TELDEB = \'':teldeb.'\';' "); $req1->execute(array(':maildeb' => $_POST['MAILDEB'],':teldeb' => $_POST['TELDEB'])); // recherche de résultat $data = $req1->fetch(); if ($data=':maildeb') { // S'il y a un résultat, c'est à dire qu'il existe déjà un email, alors "Cet email est déjà utilisé" echo "Cet e-mail existe deja!"; //Sinon le résultat est nul ce qui veut donc dire qu'il ne contient aucun email }else { echo "Bienvenue !" ; $req1="INSERT INTO client (MAILDEB)VALUES('".$MAILDEB."','" .$TELDEB. "')"; die (" Inscription terminee <a href='accueil.php'> connectez vous </a> ici"); } } }else echo "<center>Les deux mot de passe doivent être identiques</center>"; }else echo "<center> Veuillez saisir tous les champs</center>"; }
A voir également:
- Savoir si une adresse mail existe
- Darkino nouvelle adresse - Guide
- Créer une adresse mail hotmail - Guide
- Adresse mac - Guide
- Supprimer une adresse mail gmail - Guide
- Comment saisir une adresse url - Guide
3 réponses
Bonjour,
Déjà dans le if, tu dois comparer $data['MAILDEB'] (le nom de la colonne) suivi d'un double égal à la variable $maildeb :
Au lieu de ($data=':maildeb')
Sinon encore mieux: Tu testes déjà si le mail existe avec ta requête sql. Donc s'il n'y a pas de résultat, fetch() retournera 0 => false. S'il en trouve ce sera un tableau avec du contenu => "true"
Déjà dans le if, tu dois comparer $data['MAILDEB'] (le nom de la colonne) suivi d'un double égal à la variable $maildeb :
if($data['MAILDEB'] == $MAILDEB)
Au lieu de ($data=':maildeb')
Sinon encore mieux: Tu testes déjà si le mail existe avec ta requête sql. Donc s'il n'y a pas de résultat, fetch() retournera 0 => false. S'il en trouve ce sera un tableau avec du contenu => "true"
if($req1->fetch())
Bonjour
En plus des remarques de ghFrankfurt, que font toutes ces apostrophes et ce point dans ta requête préparée ? Il n'en faut pas :
Es-tu sûr que c'est un OR que tu veux dans ta condition, et non pas un AND ? Mais là, c'est toi qui vois en fonction de ton application.
Et pour ta seconde requête,
tu devrais aussi utiliser une requête préparée au lieu de mettre directement les variables sans les échapper.
Et tu insères 2 valeurs alors que tu n'indiques qu'un seul champ !
Et tu devrais surtout l'exécuter !
En plus des remarques de ghFrankfurt, que font toutes ces apostrophes et ce point dans ta requête préparée ? Il n'en faut pas :
$req1 = $connexion->prepare("SELECT MAILDEB FROM client WHERE MAILDEB = :maildeb OR TELDEB = :teldeb ");
Es-tu sûr que c'est un OR que tu veux dans ta condition, et non pas un AND ? Mais là, c'est toi qui vois en fonction de ton application.
Et pour ta seconde requête,
$req1="INSERT INTO client (MAILDEB)VALUES('".$MAILDEB."','" .$TELDEB. "')";
tu devrais aussi utiliser une requête préparée au lieu de mettre directement les variables sans les échapper.
Et tu insères 2 valeurs alors que tu n'indiques qu'un seul champ !
Et tu devrais surtout l'exécuter !
PHP est sensible à la casse donc "mail" et "Mail" ne seront pas identique.
Par défaut MySQL est insensible à la casse donc ses deux chaînes seront identiques pour lui.
merci pour vos remarques,j'ai deja utilisé la condition pour vérifier si l'email existe mais c'est pareil ça ne fonctionne pas et pourtant avant il fonctionnait nickel je ne sais pas pourquoi ,voici le code
Après tu pourras adapter le code à tes besoins.
Deux possibilités :
Tu envoies une mauvaise information depuis ton formulaire (vide ou fixe).
Tu insères une donnée (teldeb OU maildeb) déjà présent dans ta base de donnée.