[RESOLU] afficher les id des membre dans les liens des pages

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] afficher les id des membre dans les liens des pages

Re: [RESOLU] afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 22:10

tout dépend ce que l'on appelle une page profil.
tout le monde peut accéder à membre/max303/
il faut être connecté pour accéder à ucp.php et les données sont spécifiques au membre connecté.
Je comprends maintenant. Alors, tu penses que pour qu'un utilisateur non connecté puisse voir le nombre d'annonces que celui connecté serait possible dans notre cas? Sinon, comment faudrait-il procéder..?

Re: [RESOLU] afficher les id des membre dans les liens des pages

par or 1 » 05 déc. 2021, 21:52

tout dépend ce que l'on appelle une page profil.
tout le monde peut accéder à membre/max303/
il faut être connecté pour accéder à ucp.php et les données sont spécifiques au membre connecté.

Re: afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 21:45

mais attention, ça n'affichera alors que les infos de profil de l'utilisateur connecté.
Il ne sera plus possible qu'un utilisateur affiche les infos de profil d'un autre utilisateur (ce qui est peut être normal ?)
Je n'ai pas bien compris @rthur. Si bien le membre connecté a publié une une annonce, alors, elle peut être vue, mais que les autres membres puissent accéder à son profil, c'est normal que ça affiche que ses infos à lui, autant qu'elles sont confidentielles, sauf une annonce publiée par exemple

Re: afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 21:34

if(isset($_GET['id']) AND $_GET['id'] > 0) {
si l'id n'est plus passé en paramètre car la page ne sert qu'à afficher le profil de la personne connectée, alors il faut changer cette ligne.
Super!!!!!! ça marche !!! Voilà ce que j'ai fait en suivant tes instructions, si ça peut aider des gens plus tard:
1-J'ai remplacé la ligne que tu as mentionnée par ceci:

Code : Tout sélectionner

if(isset($_SESSION['id'])) { $session = intval($_SESSION['id']); $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); $requser->execute(array($session)); $userinfo = $requser->fetch();
Merci à vous deux @rthur et or 1 :)

Re: afficher les id des membre dans les liens des pages

par @rthur » 05 déc. 2021, 21:28

Il faut que tu remplaces $_GET['id'] par $_SESSION['id'], mais attention, ça n'affichera alors que les infos de profil de l'utilisateur connecté.
Il ne sera plus possible qu'un utilisateur affiche les infos de profil d'un autre utilisateur (ce qui est peut être normal ?)

Re: afficher les id des membre dans les liens des pages

par or 1 » 05 déc. 2021, 21:21

if(isset($_GET['id']) AND $_GET['id'] > 0) {
si l'id n'est plus passé en paramètre car la page ne sert qu'à afficher le profil de la personne connectée, alors il faut changer cette ligne.

Re: afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 21:15

Quand tu fais un var_dump($_SESSION['id']) sur cette page, tu récupères bien l'ID du membre connecté ?

var_dump(), c'est plus fiable que echo pour debuguer.

Si tu obtiens bien le bon ID alors il faut que tu mettes cette variable au bon endroit dans ton code pour qu'il charge le profil de celui-ci
Oui, je recupère bien l'id. Où faudrait -il que je mette cette variable dans le code, parce que je l'ai presque partout:

Code : Tout sélectionner

<?php session_start(); include "header.php"; $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', ''); if(isset($_GET['id']) AND $_GET['id'] > 0) { $getid = intval($_GET['id']); $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); $requser->execute(array($getid)); $userinfo = $requser->fetch(); ?> <html> <head> <title>TUTO PHP</title> <meta charset="utf-8"> </head> <body> <div align= "center" class="container height-100 d-flex justify-content-center align-items-center"> <div class="card text-center"> <div class="py-4 p-2"> <div> <img src="https://i.imgur.com/EnANUqj.jpg" class="rounded" width="100"> </div> <div class="mt-3 d-flex flex-row justify-content-center"> <h5 style="font-size: 20px;"><?php echo $userinfo['pseudo']; ?></h5> </div> <span>Membre depuis le <?php echo $userinfo['date_inscription']; ?></span> <?php if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) { ?> <div class="mt-3"> <button class="btn" onclick="window.location.href = 'formannonce.php';">Déposer une annonce</button> </div> </div> <div> <ul class="list-unstyled list"> <li> <span class="font-weight-bold">Mes annonces</span> <div> <span class="mr-1">5</span> <i class="fa fa-angle-right"></i> </div> </li> <li> <span class="font-weight-bold" onclick="window.location.href = '';">Editer mon profil</span> <div> <span class="mr-1"></span> <i class="fa fa-angle-right"></i> </div> </li> <li> <span class="font-weight-bold" onclick="window.location.href = 'deconnexion.php';">Déconnexion</span> <div> <span class="mr-1"></span> <i class="fa fa-angle-right"></i> </div> </li> </ul> <?php }?> </div> </div> </div> </body> </html> <?php } ?> <?php include "footer.php"; ?>

Re: afficher les id des membre dans les liens des pages

par @rthur » 05 déc. 2021, 20:33

Quand tu fais un var_dump($_SESSION['id']) sur cette page, tu récupères bien l'ID du membre connecté ?

var_dump(), c'est plus fiable que echo pour debuguer.

Si tu obtiens bien le bon ID alors il faut que tu mettes cette variable au bon endroit dans ton code pour qu'il charge le profil de celui-ci

Re: afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 20:21

Dans ta page profil.php, refais un session_start() et tu auras l'ID de l'utilisateur connecté dans la variable $_SESSION['id']
Pas besoin de la passer en paramètre dans l'url
Est-ce que j'ai bien compris, parce que J'ai enlevé le session_start(); et je l'ai remis. La page profil.php est toujours vide.
Voici mon code pour la page connexion.php

Code : Tout sélectionner

<?php session_start(); $bdd= new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', ''); if(isset($_POST['formconnexion'])) { $telephone = intval($_POST['telephone']); $motdepasse = sha1($_POST['motdepasse']); $requser = $bdd->prepare("SELECT * FROM membres WHERE telephone = ? AND motdepasse = ?"); $requser->execute(array($telephone, $motdepasse)); $userexist = $requser->rowCount(); if($userexist == 1) { $userinfo = $requser->fetch(); $_SESSION['id'] = $userinfo['id']; $_SESSION['pseudo'] = $userinfo['pseudo']; $_SESSION['telephone'] = $userinfo['telephone']; $_SESSION['email'] = $userinfo['email']; header("Location: profil.php?id=".$_SESSION['id']); } else { echo("<p1 style= 'color: green; background-color: white; margin-top: 120px; '>".Bonjour " </p1>"); } } ?>
page profil.php

Code : Tout sélectionner

<?php session_start(); include "header.php"; $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', ''); if(isset($_GET['id']) AND $_GET['id'] > 0) { $getid = intval($_GET['id']); $requser = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); $requser->execute(array($getid)); $userinfo = $requser->fetch(); ?>

Re: afficher les id des membre dans les liens des pages

par @rthur » 05 déc. 2021, 19:27

Dans ta page profil.php, refais un session_start() et tu auras l'ID de l'utilisateur connecté dans la variable $_SESSION['id']
Pas besoin de la passer en paramètre dans l'url

Re: afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 17:15

Bonjour @rthur, merci pour ta réponse.



Du coup tu n'as pas besoin de le passer en paramètre mais simplement de l'utiliser dans tes pages profil.php ou formulaire.php vu qu'avec un echo ça fonctionne.
Je n'ai pas bien compris. Je cherche à ce qu'en cliquant sur le bouton lorsque le membre est connecté ça renvoie vers la page du profil du membre ayant cliqué, et non une page de profil vide.
Que manque-t-il dans le code suivant?

Code : Tout sélectionner

onclick="window.location.href = 'profil.php?id=$_SESSION[id]';"
ça dépend comment son stocker les données que tu souhaites afficher.
Si c'est dans une base de données, alors oui il faut faire une requête SQL (via PDO par exemple) puis faire une boucle sur tous les résultats avec un echo pour afficher ce que tu veux.
Compris

Re: afficher les id des membre dans les liens des pages

par @rthur » 05 déc. 2021, 16:52

Dans les pages où il y a des session start(), je n'arrive pas à voir dans l'url l'id du membre connecté,.
L'ID de session est stocké dans un cookie et envoyé dans l'entête de ta requête.
Sauf configuration particulière il ne passe jamais dans l'url.

2- Pour le lien ça me renvoie une page de profil vide où il n'y a pas les informations du membre:

Code : Tout sélectionner

onclick="window.location.href = 'profil.php?id=$_SESSION[id]';"
Nb: quand j'echo $_SESSION[id], ça l'affiche bien.
Du coup tu n'as pas besoin de le passer en paramètre mais simplement de l'utiliser dans tes pages profil.php ou formulaire.php vu qu'avec un echo ça fonctionne.
3-Et dernièrement, je voudrais savoir comment faire afficher le nombre d'annonces pour un membre inscrit. Je pense à echo...; ou faut-il faire une requête avant?
ça dépend comment son stocker les données que tu souhaites afficher.
Si c'est dans une base de données, alors oui il faut faire une requête SQL (via PDO par exemple) puis faire une boucle sur tous les résultats avec un echo pour afficher ce que tu veux.

afficher les id des membre dans les liens des pages

par max303 » 05 déc. 2021, 16:29

Bonjour,

C'est au niveau de la session que les soucis apparaissent.

Dans les pages où il y a des session start(), je n'arrive pas à voir dans l'url l'id du membre connecté,. Exemple:

Au lieu d'afficher accueil.php?id=1. Au contraire ça affiche accueil.php. Pareil pour le formulaire lorsque le membre est connecté: ça renvoie formulaire.php sans l'id.


Nb: quand j'echo $_SESSION[id], ça l'affiche bien.

2- Pour le lien ça me renvoie une page de profil vide où il n'y a pas les informations du membre:

Code : Tout sélectionner

onclick="window.location.href = 'profil.php?id=$_SESSION[id]';"
3-Et dernièrement, je voudrais savoir comment faire afficher le nombre d'annonces pour un un membre inscrit. Je pense à echo...; ou faut-il faire une requête avant?
Merci d'avance :)