Affichage des informations d'une session

Résolu/Fermé
marcelpeju22 Messages postés 8 Date d'inscription samedi 10 octobre 2015 Statut Membre Dernière intervention 9 mars 2016 - 10 oct. 2015 à 22:06
marcelpeju22 Messages postés 8 Date d'inscription samedi 10 octobre 2015 Statut Membre Dernière intervention 9 mars 2016 - 13 oct. 2015 à 18:43
Bonjour,

J'essaie d'afficher les informations recueillies sur une base de données. Ces informations devraient correspondre à celle d'un usager dans une session privée. Par exemple, je voudrai afficher son prénom, son nom et d'autres informations personnelles. J'ai essayé beaucoup de choses en consultant toute sorte de ressource, mais je n'y arrive toujours pas. Vous pouvez peut-être m'aider?

Voici mon code :

<?php


try
{
$bdd = new PDO('mysql:host=localhost;dbname=phpmembre', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}

$reponse = $bdd->query("SELECT * FROM users WHERE session'");


while ($donnees = $reponse->fetch())
{
echo $donnees['prenom']." ". $donnees['nom']." ". $donnees['numero']." ". $donnees['rue']." ". $donnees['ville'];
}

?>

Merci!

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
12 oct. 2015 à 09:26
Salut,

Commence par définir le rapport d'erreur PDO en mode warning ou exception afin de voir les erreurs sql : https://www.php.net/manual/fr/pdo.error-handling.php

Ta requête sql n'est pas correcte, il manque une condition dans la clause where, par exemple :
$reponse = $bdd->query("SELECT * FROM users WHERE session = 'session_de_lutilisateur'"); 

-> à toi d'indiquer la valeur correcte de la session de l'utilisateur.

Bonne journée
0
marcelpeju22 Messages postés 8 Date d'inscription samedi 10 octobre 2015 Statut Membre Dernière intervention 9 mars 2016
12 oct. 2015 à 20:09
Bon, vous allez trouver que je suis un peu débutant, mais j'ai essayé quelques possibilités et je n'arrive pas à trouver ce qui devrait aller à la place de 'session_de_lutilisateur'. J'imagine que la réponse se trouve dans le code du login?


<?php

session_start();

if(isset($_POST['submit']))
{
$username = htmlspecialchars(trim($_POST['username']));
$password = htmlspecialchars(trim($_POST['password']));

if(empty($username))
{
echo "Veuillez saisir votre pseudo<br/>";

}else if(empty($password))

{
echo "veuillez saisir votre mot de passe";

}else{

mysql_connect('localhost','root','');
mysql_select_db('phpmembre');

$password = md5($password);

$login = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");

$rows = mysql_num_rows($login);

if($rows == 1)
{
$_SESSION['username'] = $username;

header('location:membre.php');

}else echo '<p class="incorrect">*Nom d\'utilisateur ou mot de passe incorrect</p>';

}
}

?>


J'ai aussi un message d'erreur avec cette ligne :
while ($donnees = $reponse->fetch()) 

On me dit ceci : Call to a member function fetch() on boolean
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
13 oct. 2015 à 09:20
Tu utilises l'api Mysql à la place de PDO maintenant ? Les fonctions mysql_* sont obsolètes et seront supprimés de prochaine version de php.

Néanmoins si tu veux utiliser l'api Mysql, n'oublie pas également d'afficher les erreurs sql avec la fonction mysql_error() : https://www.php.net/manual/fr/function.mysql-error.php
Exemple :
$login = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");

if (!$login) {
    echo 'Erreur sql : ' . mysql_error();
} else {
    $rows = mysql_num_rows($login);

    // ...
}


Concernant la valeur de la session de l'utilisateur, je ne connais pas ton code et donc je ne sais pas plus que toi. Qu'est-ce que tu enregistres dans le champ session de la table users ?

D'après ton code login, tu stockes le username dans la super-globale $_SESSION. Du coup selon moi la requête qui récupère les informations de l'utilisateur dans une session privée devrait plutôt ressembler à ceci :
$reponse = $bdd->query("SELECT * FROM users WHERE username = '" . $_SESSION['username'] . "'");

On récupère ainsi les infos de l'utilisateur connecté.
0
marcelpeju22 Messages postés 8 Date d'inscription samedi 10 octobre 2015 Statut Membre Dernière intervention 9 mars 2016
13 oct. 2015 à 18:43
Ça fonctionne maintenant. Merci beaucoup!
0