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(); }
}
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
bonjour carouge10
merci pour ta reponse et merci pour le conseil
comment je pourrais faire cette requete ?
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();
?>
oui c est bien a cela que je pensais
a mettre dans le select
peut etre ceci
WHERE email=$_SESSION['email']
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 ?
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 = ?
merci carouge10
je vais tenter ceci alors
SELECT email FROM utilisateurs WHERE email =id
je ne savais pas que cela etait possible ...
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
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();
?>
?>
?>
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
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();
?>
tous les exemples de requetes select que je trouve sont avec des boucles malheuresuement
requarde la doc sur php.net
tu as su le faire pour la connexion, ce n'est pas si différent pour celle-ci
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