Bonjour à tous,
Je viens poster ce sujet, car j'ai créé un site avec système de sessions assez soft.
J'aimerais, une fois le membre connecté, afficher par exemple "bonjour Pierre", ou d'autre choses avec le nom de la personne s'étant loguée (avec son nom de famille et son mdp).
Voici le code de verification de session qui marche tres bien :
<? session_start();
if(!isset($_SESSION['nom']))
{
echo 'Vous n\'êtes pas connecté au site. Vous ne pouvez donc pas acceder à cette page.
Il faut vous <a href="../index.php" >identifier</a>.';
exit;
}
?>
Ensuite, ce qui me pose problème c'est que je n'arrive pas a récuperer le nom dans un premier temps.
Voici la derniere fonction que j'ai pondue sans résultat :
<?php
if(isset($_SESSION['nom']))
{
echo $nom;
}
?>
Ce nom est associé forcement à un prénom dans la BDD, et j'aimerais afficher ce prénom au lieu du nom.
J'espere avoir été assez explicite, et je vous remercie par avance en m'excusant du post assez long.
Pourquoi tu fais un echo de $nom alors que tu testes la session nom ?
<?php
if(isset($_SESSION['nom']))
{
echo $_SESSION['nom'];
}
?>
Si ca affiches bien le nom, c'est bon. Ensuite tu fais un select dans ta BDD sur le nom. Par contre, c'est dangereux, car si plusieurs users ont le même nom ...
Merci de ta réponse,
Mais justement, le nom ne s'affiche pas. Je sais que ca passe puisque la session est "ouvert".
Comment faire pour choisir le prénom associé au nom dans la BDD ?
Ne t'en fait pas il n'y aura pas de doublon de nom car c'est un site restreint à ma section de bts soit 25 personnes.
"Comment faire pour choisir le prénom associé au nom dans la BDD ? " > tu as deux solutions (grosso modo) :
- quand l'utilisateur se connecte, tu génère la session nommée "nom" en indiquant son nom (si tu sais connecter une personne, tu sais alors récupérer son nom)
- ou quand l'utilisateur se connecte, tu stock son ID dans la session et tu récupère le nom avec une requête quand tu en as besoin
Quand tu ouvre la session quand l'user s'identifie il faut récupérer le nom et le stocké dans Sessions
$_SESSION['nom'] = $nom;// ou $nom est le le nom de l'user récupérer en BD ![]()
le mieux c'est tu stock l'id et ensuite tu fait ta requête !
D'accord, merci à vous, je vais essayer ça ! Mais la session est créée avec le code suivant :
<? session_start();
if(!isset($_SESSION['nom']))
{
echo 'Vous n\'êtes pas connecté au site. Vous ne pouvez donc pas acceder à cette page.
Il faut vous <a href="../index.php" >identifier</a>.';
exit;
}
?>
Si je comprend bien, il faut que je fasse une requete à la BDD demandant le prenom correspondant au nom. Mais je ne vois pas trop. Peut-être :
<?php
// Connexion à la base de données, puis :
// - Récupération du prenom
$reponse = $bdd->query('SELECT prenom FROM membre WHERE nom='.$nom.' ');
// - Affichage de celui-ci
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . htmlspecialchars($donnees['prenom']) . '</strong></p>';
}
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Par contre là je ne sais pas comment l'insérer dans la variable session.
En attendant vos conseil j'ai mené mon enquête, j'ai trouvé une explication sur comment stocker et utiliser les cookies.
J'ai bien suivis le truc, fait ce qu'il y avais a faire, mais ca m'affiche une erreur :
Parse error: syntax error, unexpected '|' in /homepages/25/d406655023/htdocs/comm.php on line 5
Et voici le code concerné (les lignes sont respectées) :
<?
if (isset($_POST['Infos_NRC13']))
{
$expire = 365*24*3600; // 1 an de durée cookie
setcookie("Infos_NRC13", $_POST['nom']&|&$_POST['prenom'], time()+$expire); // création du cookie
}
?>
Vous me l'accorderais, j'ai suivis bêtement le tuto mais pas sans comprendre. J'ai bien compris les éléments. Vérifié etc.
Merci à vous.
Avec ca :
<? session_start();
if(!isset($_SESSION['nom']))
{
echo 'Vous n\'êtes pas connecté au site. Vous ne pouvez donc pas acceder à cette page.
Il faut vous <a href="../index.php" >identifier</a>.';
exit;
}
?>
Tu affectes aucune valeur. Tu testes juste si la session est vide.
Quel est ton code qui affectes le nom à la session ?
Bonjour à toi en cette belle matinée.
Alors, je sais que ce code teste juste si la session est vide.
Je n'ai auncun code qui affecte le nom à la session, en gros, il suffit juste d'avoir un nom + mdp pour entrer sur le site. Et c'est moi qui valide les inscriptions avant de pouvoir y acceder.
Je doit rajouter ça à mon code pour nommer la session ?
$_SESSION['login']='$nom';
(login = le nom de la session, $nom = la valeur contenue dans la session)
Si oui, doit-je le rajouter à la suite du session_start, apres le } en dessous du exit ?
Si non, à quel endroit ?
Si tu fais pas d'affectation, comment veux-tu que ta session contienne le nom ??
Oui il faut que tu le rajoutes lorsque tu peux récupérer ce nom. Tu dois avoir un $_POST['nom'] quelque part j'imagine. Et bien a cet endroit tu stockes le POST dans la SESSION
Voici le code associé au formulaire de connexion :
<?php
mysql_connect("XXX", "XXX", "XXX");
mysql_select_db("XXX");
if(isset($_POST) && !empty($_POST['nom']) && !empty($_POST['passe'])) {
extract($_POST);
// on recupère le password de la table qui correspond au nom du visiteur
$sql = "select passe from connexion where nom='".$nom."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
if($data['passe'] != sha1($passe)) {
echo '<p>Mauvais nom / mot de passe. Merci de recommencer en retournant à la page de <a href="http://XXX.FR" >connexion</a>.</p>';
exit;
}
else {
session_start();
$_SESSION['nom'] = $nom;
echo '<p>Vous êtes bien identifié</p>';
// Renvois vers l'accueil
echo '</br></br><p><div style="text-align:center;"><a href="../accueil.php"> <img src="../images/entrer.gif" /> </a></div></p>';
}
}
else {
echo '<p>Veuillez vous identifier, ou vous inscrire : <a href="XXX/inscription.php" >ICI</a></p>';
include(XXX/login.htm'); // On inclut le formulaire d'identification
exit;
}
?>
Vous comprendrez que j'ai mis des XXX là où les info sont confidentielles (code de connexion, et structure du site), la folle la guêpe. ![]()
Donc je n'avais pas vu mais il y est bien ce $_POST et le $_SESSION.
Donc la session est nommée, l'info est dedans. Reste plus qu'à l'associer au prénom correspondant dans la BDD.
L'info n'est pas dedans du tout.
Tu devrais revoir les bases complètes de PHP.
Quand tu fais ca :
$sql = "select passe from connexion where nom='".$nom."'";
Ton $nom n'est jamais affecté. Tu dois faire un $nom = $_POST['nom'] tu crois pas ? Et pareil pour la session.
Ah d'accord ...
Oui je vais faire cela, car j'ai un peu appris sur le tas, au fur et à mesure de la construction du site.
Merci pour ta patience et ton aide.
Tu as un conseil à me donner sur quel support apprendre ? Un site, un livre ?
Les tutoriels du siteduzero suffisent pour avoir des bases solides en PHP ![]()
C'est ceux-là que j'ai suivis, mais j'ai du sauter des étapes ![]()
Mais c'est vrai que une fois fini le html, le passage au php est compliqué sur certains points, ma grande difficulté c'est bien les variables/sessions, pourtant ça n'a pas l'air si difficile que ça !