comment récupérer le mail de l utilisateur

Par flexi2202, il y a 5 ans


bonjour a tous
j ai un espace membre
et je souhaiterais pouvoir récupérer le mail de l utilisateur pour l afficher sur une page
lorsque je fais ceci je ne vois que le pseudo

<?php session_start(); var_dump($_SESSION);

je pense que je dois configurer cela dans ma page de connexion , mais comment ??

<?php session_start(); // require_once 'config.php'; require_once 'config.php'; if(!empty($_POST['pseudo']) && !empty($_POST['password'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $password = htmlspecialchars($_POST['password']); $check = $bdd->prepare('SELECT pseudo, password FROM utilisateurs WHERE pseudo = ?'); $check->execute(array($pseudo)); $data = $check->fetch(); $row = $check->rowCount(); if($row == 1) { if(password_verify($password, $data['password'])) { $_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$data['pseudo']) ; $_SESSION['pseudo'] = $data['pseudo']; header('Location: accueil-peche-perle.php?pseudo='.$_SESSION['pseudo']); die(); }else{ header('Location: index.php?login_err=password'); die(); } }else{ header('Location: index.php?login_err=already'); die(); } }

25 réponses

flexi2202, il y a 5 ans

oui c est bien a cela que je pensais
a mettre dans le select
peut etre ceci

WHERE email=$_SESSION['email']

Carouge10, il y a 5 ans

tu as su le faire pour la connexion, ce n'est pas si différent pour celle-ci

si tu as l'email en session, pourquoi le demander par une requête ?

flexi2202, il y a 5 ans

merci carouge10
je vais tenter ceci alors
SELECT email FROM utilisateurs WHERE email =id

je ne savais pas que cela etait possible ...

Carouge10, il y a 5 ans

pourquoi cela ne le serai pas ?
pourquoi avoir 2 fois le pseudo dans la session ?

flexi2202, il y a 5 ans

merci pour ton aide carouge10
mais ce qui m interesse c est justement l email , en session lorsque je fais le var_dump sur une autre page je n ai que le pseudo

donc je pourrais demander l email de cette facon

WHERE email = ?

Carouge10, il y a 5 ans

oui et que mettrais comme paramètre pour "?"
parmi les éléments dont tu disposes ?

flexi2202, il y a 5 ans

le pseudo dans ce cas la ...

Carouge10, il y a 5 ans

Bonjour,
Pas de htmlspecialchars sur les données entrée en BDD c'est UNIQUEMENT à l'affichage
Comme le dit la doc, rowCount ne s'utilise pas sur une requête SELECT, tu peux directement utiliser le "fetch" ou un "fetchColumn"
Si tu as besoin de l'email à plusieurs reprise ailleurs, alors oui tu peux utiliser les sessions sinon tu fais une requête pour demander l'email

flexi2202, il y a 5 ans

bonjour carouge10
merci pour ta reponse et merci pour le conseil
comment je pourrais faire cette requete ?

Carouge10, il y a 5 ans

une requête select qui demande l'email ...... c'est la base à savoir faire

Carouge10, il y a 5 ans

je partirais plus sur l'id

flexi2202, il y a 5 ans

cela j arrive a le faire de cette maniere mais alors j obtiens tous les emails

<?php try { $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT email FROM utilisateurs '); while ($donnees = $reponse->fetch()) { echo $donnees['email'] . '<br />'; } $reponse->closeCursor(); ?>
Carouge10, il y a 5 ans

et la condition ? le WHERE ?

flexi2202, il y a 5 ans

merci pour la reponse
en fait et pour etre honnete c est un autre membre d un autre forum qui me l avais corrige de cette facon

flexi2202, il y a 5 ans

je viens donc d essayer
mais rien n est retourne

<?php <?php try { $bdd = new PDO('mysql:host=localhost;dbname=id1phil;charset=utf8', 'id16', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT email FROM utilisateurs WHERE email =id '); while ($donnees = $reponse->fetch()) { echo $donnees['email'] . '<br />'; } $reponse->closeCursor(); ?> ?> ?>
Carouge10, il y a 5 ans

tu es sur d'avoir l'id dans la session avec ton code actuel ? car tu ne le récupères pas dans ta requête sur le 1er code

voici un code plus optimisé

<?php session_start(); // require_once 'config.php'; require_once 'config.php'; if(!empty($_POST['pseudo']) && !empty($_POST['password'])) { $check = $bdd->prepare('SELECT id, pseudo, password FROM utilisateurs WHERE pseudo = ?'); $check->execute(array($_POST['pseudo'])); if($data = $check->fetch()) { if(password_verify($_POST['password'], $data['password'])) { $_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$_POST['pseudo']) ; header('Location: accueil-peche-perle.php?pseudo='.$_POST['pseudo']); die(); }else{ header('Location: index.php?login_err=password'); die(); } }else{ header('Location: index.php?login_err=already'); die(); } }

EDIT: faut vraiment que tu revois le cours sur les requêtes préparées

flexi2202, il y a 5 ans

ah super un tres grand merci pour ce code c est vraiment gentil

comme explique plus haut j ai essaye un code dans une page ou je souhaite afficher l email mais cela ne fonctionne pas malheuresuement ...
par contre avec la var_dump j ai bien l id a present

<?php try { $bdd = new PDO('mysql:host=localhost;dbname=id760_phil;charset=utf8', 'i', 'S202+'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT email FROM utilisateurs WHERE email =id '); while ($donnees = $reponse->fetch()) { echo $donnees['email'] . '<br />'; } $reponse->closeCursor(); ?>
Carouge10, il y a 5 ans

faut vraiment que tu revois le cours sur les requêtes préparées

flexi2202, il y a 5 ans

tous les exemples de requetes select que je trouve sont avec des boucles malheuresuement

Carouge10, il y a 5 ans

requarde la doc sur php.net
tu as su le faire pour la connexion, ce n'est pas si différent pour celle-ci

flexi2202, il y a 5 ans

merci carouge10
je suis en train de chercher un exemple

Carouge10, il y a 5 ans

tu en as un sous tes yeux....

flexi2202, il y a 5 ans

oui c est vrai et je vais regarder a cela de plus pres
mais j ai modifie le fichier de connexion que tu m as offert
j ai modifier cette ligne

$_SESSION['user'] = array('id'=>$data['id'], 'pseudo'=>$data['pseudo'], 'email'=>$data['email']) ;

et du coup quand j effectue le var£_dump j ai bien a present mon email

Carouge10, il y a 5 ans

parfait. tu peux donc passer en résolu

flexi2202, il y a 5 ans

voila c est fait et encore merci