[RESOLU] comment vérifier si email présent ou pas dans ma base

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] comment vérifier si email présent ou pas dans ma base

Re: comment vérifier si email présent ou pas dans ma base

par flexi2202 » 14 mai 2021, 10:19

bonjour Shadowwera
merci pour ta reponse
j ai fini par trouver voici un code qui fonctionne

Code : Tout sélectionner

<?php //démarrage SESSION session_start(); //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // Include pour la connexion à la bdd require_once 'config.php'; //récupération PROPRE des variables AVANT de les utiliser $email = !empty($_SESSION['email']) ? $_SESSION['email'] : NULL; //préparation de la requête et des variables $sql = "SELECT * FROM neuw WHERE email=?"; $datas = [$email]; //exécution de la requête try{ $stmt = $pdo->prepare($sql); $stmt->execute($datas); $user = $stmt->fetch(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } if (!empty($user)) { echo "email existe"; } else { echo "email n'existe pas"; }

Re: comment vérifier si email présent ou pas dans ma base

par Shadowwera » 14 mai 2021, 08:43

Bonjour flexi2202,

C'est normal qu'il te retourne toutes les adresses mail puisque tu n'a pas indiqué de filtre.
Il te faudrait en ajouter un de cette manière :
$reponse = $bdd->query("SELECT email FROM utilisateurs WHERE email = '$email' ");
où $email serais l'adresse email que l'utilisateur aura renseigné lors de sa connexion ( celle associé a son compte )

Si ta session ne te retourne que le pseudo lors de ton var_dump :
session_start();
var_dump($_SESSION);
C'est tout simplement que tu ne la pas stocker dedans ??
Comment enregistre tu le pseudo dans ta session ?

Re: comment vérifier si email présent ou pas dans ma base

par flexi2202 » 12 mai 2021, 19:38

merci Ryle pour la reponse
oui voila c est bien ca
en fait l'utilisateur s'est authentifié sur ton site d'une manière ou d'une autre et tu veux vérifier si l'adresse qu'il a renseigné dans son profil est également présente dans ta table de newsletter pour l'inviter à s'inscrire ou non ?

mais je ne parviens pas a retrouver l adresse mail de la table utilisateurs
en début de page j ai ceci

Code : Tout sélectionner

<?php session_start(); var_dump($_SESSION); ?>
et je n ai de retour que le pseudo

comment faire pour récupérer l adresse mail de ma table utilisateurs

de cette façon je récupère toutes les adresses mail de ma table utilisateurs

mais ce qui m intéresse c est juste celle de celui qui est connecte
donc il faut l extraire ...

Code : Tout sélectionner

<?php try { $bdd = new PDO('mysql:host=localhost;dbname=id1_phil;charset=utf8', 'id1760_ari', '02+'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT email FROM utilisateurs'); while ($donnees = $reponse->fetch()) { echo $donnees['email'] . '<br />'; } $reponse->closeCursor(); ?>

Re: comment vérifier si email présent ou pas dans ma base

par Ryle » 12 mai 2021, 18:59

Pas sûr de bien comprendre... en fait l'utilisateur s'est authentifié sur ton site d'une manière ou d'une autre et tu veux vérifier si l'adresse qu'il a renseigné dans son profil est également présente dans ta table de newsletter pour l'inviter à s'inscrire ou non ?

Le principe reste strictement le même. C'est simplement ta requête qui va sans doute évoluer un peu. En supposant que tu disposes de l'id de l'utilisateur connecté (ou autre information équivalente), il va te falloir faire une jointure dans ta requête pour interroger les deux tables (en rapprochant celles-ci grâce à l'adresse email) et voir s'il existe un résultat (et donc une correspondance entre les deux tables) pour l'utilisateur dont tu as l'id

Si pas de résultat, il n'est pas inscrit, si résultat, il y est déjà :)

Re: comment vérifier si email présent ou pas dans ma base

par flexi2202 » 12 mai 2021, 18:15

Ryle bonjour
merci pour ta solution mais comme explique un peu plus haut je me suis emmele les pinceaux sur ce coup et ce que je recherche a faire c est de savoir si l email de l utilisateur de la session en cours est dans une autre table

ma table ou sont mes utilisateurs s appelle utilisateurs et la table des adresse email qui vont me servir pour une newsletter ce trouve dans neuw

mon idée est la suivante je souhaiterais afficher un pop up dés la connexion de l utilisateur et lui demander d indiquer si il veux recevoir la newsletter
mais je dois vérifier si son adresse mail est déjà inscrite dans la table neuw avant de lui en faire la demande

Re: comment vérifier si email présent ou pas dans ma base

par flexi2202 » 12 mai 2021, 18:08

bonjour Shadowwera
merci pour ta solution

en fait je me suis un peu emmêlé les pinceaux

je souhaiterais vérifier que l email de la session en cours se trouve oui ou non dans une autre table

as tu une idée de comment je pourrais m y prendre

Re: comment vérifier si email présent ou pas dans ma base

par Ryle » 12 mai 2021, 18:03

La méthode fetch() de PDO retourne false si une erreur survient. Le fait que ta requête ne retourne pas d'enregistrement parce qu'elle n'en a pas trouvé en base n'est pas une erreur et ta variable $user ne contient jamais la valeur false à moins d'une erreur technique. Tu peux afficher celle-ci pour vérifier son contenu, qui devrait être un tableau vide.

Tu peux alors dans ton test vérifier si $user est vide (avec empty()), ou utiliser la solution de Shadowwera en comptant le nombre d'enregistrements retournés.

A mon sens, l'inconvénient de ces méthodes, c'est qu'elles retournent toutes les informations associées à l'adresse mail dans ta table, dont tu n'as que faire parce que tu veux juste savoir si l'enregistrement existe ou non. Bien que cela fonctionne parfaitement et que l'écart en terme de performance sera sans doute minime, je préfère pour ma part utiliser une requête avec un COUNT() qui retourne toujours un résultat, celui-ci correspondant au nombre d'enregistrements trouvés (sans retourner inutilement le détail de ceux-ci, ce qui pourrait être volumineux alors que je n'en ai que faire).
require_once 'config.php';
$stmt = $pdo->prepare("SELECT COUNT(*) AS nb FROM neuw WHERE email=?");
$stmt->execute([$email]);
$user = $stmt->fetch();
if ($user['nb'] > 0) {
// email existe
} else {
// email n'existe pas
}

Re: comment vérifier si email présent ou pas dans ma base

par Shadowwera » 12 mai 2021, 16:50

Salut flexi2202,

Dans mon cas, lorsque je souhaite savoir si une donnée existe déjà, j'utilise la fonction rowCount.
Si celle-ci est différent de 0, alors cela signifie qu'une entrée est déjà existante :
$stmt = $pdo->prepare("SELECT * FROM neuw WHERE email=?");
$stmt->execute([$email]);
$nbr= $stmt->rowCount();
if ($nbr > 0 ) {
// email existe
} else {
// email n'existe pas
}

comment vérifier si email présent ou pas dans ma base

par flexi2202 » 12 mai 2021, 16:19

bonjour a tous
je souhaite consulter une base de donnée et en fonction que l email existe ou n existe pas afficher quelque chose

j ai essaye ce code
mais cela ne fonctionne pas

Code : Tout sélectionner

require_once 'config.php'; $stmt = $pdo->prepare("SELECT * FROM neuw WHERE email=?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { // email existe } else { // email n'existe pas }