Afficher information php/mysql

Résolu/Fermé
Office - 2 févr. 2012 à 00:02
afrnos Messages postés 59 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 12 avril 2012 - 2 févr. 2012 à 15:14
Bonjour,

Je voudrais vous demander comment faire pour afficher une information qui se trouve dans ma base de donnée en fonction d'une condition avec session ?

Je m'explique, j'ai créé un accès membre à l'aide de tuto trouvé ici et sur google.
J'ai 4 pages (index.php, connexion.php, deconnexion.php et membre.php)

Je voudrai que dans ma page membre, je puisse afficher une information de la base de données en fonction de l'utilisateur connecté.

Je n'arrive que à afficher toute les informations d'une table mais je n'arrive pas à faire de condition.

Voir mon code :

<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: index.php');
	exit();
}
?>

<html>
<head>
<title>Espace membre</title>
</head>

<body>
Bienvenue <?php echo htmlentities(trim($_SESSION['login'])); ?>!<br />

<a href="deconnexion.php">Deconnexion</a>

<?php
try
{
    // On se connecte à MySQL
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=formu', 'root', '', $pdo_options);
    
    // On récupère tout le contenu de la table membre
    $reponse = $bdd->query('SELECT page_perso FROM membre');
    
    // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
    {
    ?>
        <p>
        <strong>Votre page</strong> : <?php echo $donnees['page_perso']; ?><br />
    <?php
    }
    
    $reponse->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
    // En cas d'erreur précédemment, on affiche un message et on arrête tout
    die('Erreur : '.$e->getMessage());
}


?>


Merci d'avance pour vos réponses,

A voir également:

3 réponses

afrnos Messages postés 59 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 12 avril 2012 16
Modifié par afrnos le 2/02/2012 à 01:48
Si j'ai bien compris, tu cherches à sélectionner une seule page perso, qui correspond à la page perso du membre connecté.
Et pour l'instant tu n'arrives qu'à sélectionner toutes les page perso, sans distinction ?

Alors c'est au niveau de ta requête SQL qu'il faut travailler :

// On récupère tout le contenu de la table membre 
    $reponse = $bdd->query('SELECT page_perso FROM membre');

Dans le code ci-dessus, tu selectionnes toutes les entrées de ta base de donnée, or si tu veux uniquement selectionner l'entrée du membre connecté, il faut rajouter une condition :

// On récupère le contenu de la table correspondant au membre 
    $reponse = $bdd->query('SELECT page_perso FROM membre WHERE id_membre = '.$_SESSION['login'].' ');


Mais entrer des variables directement dans un query(), ça peut se révéler dangereux, il faut donc faire comme ça :

// On récupère le contenu de la table correspondant au membre 
    $reponse = $bdd->prepare('SELECT page_perso FROM membre WHERE id_membre = ? ');
    $reponse->execute(array($_SESSION['login']));


Pense à remplacer id_membre par son équivalent dans ta table membre.
2
Bonjour,
peux tu me dire pourquoi cela est dangereux ?
Quel est la différence entre
    $reponse = $bdd->query('SELECT page_perso FROM membre WHERE id_membre = '.$_SESSION['login'].' ');

  $reponse = $bdd->prepare('SELECT page_perso FROM membre WHERE id_membre = ? ');

0
afrnos Messages postés 59 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 12 avril 2012 16
2 févr. 2012 à 15:14
Dangereux, car il y a un risque que votre variable $_SESSION['login'] ait été modifié par l'utilisateur dans le but de procéder à une injection SQL.
C'est pour celà qu'il faut d'abord passer par un prepare() puis un execute().
Pensez à mettre le sujet en résolu.
0
Bonjour,
Merci pour ta réponse, en fait je voudrai que en fonction de la personne connecté je puisse afficher une donnée stocké dans ma base correspondant au compte.

Ex: Personne 1

Ma base de donnée contient la table membre et j'ai
id 1
login Personne 1
pass_md5 le pass
page_perso http://votre_lien_perso_.html

Donc lorsque Personne 1 se connecte elle voit d'après mon code :
Bienvenue Personne 1,
Déconnexion

Je voudrai pouvoir ajouter cela :
Bienvenue Personne 1,
Votre lien est : "page_perso"
Déconnexion


Merci encore pour votre aide,
0
Je me répond à moi même voici le code qu'il faut que j'utilise :

// On récupère le contenu de la table correspondant au membre 
    $reponse = $bdd->prepare('SELECT page_perso FROM membre WHERE login = ? ');
    $reponse->execute(array($_SESSION['login']));
0