Rechercher : dans
Par :

PHP recuperer variable de session

Dernière réponse le 17 jun 2009 à 11:41:20 Coralie, le 16 jun 2009 à 12:25:25 
 Signaler ce message aux modérateurs

Bonjour,

En page 1 : l'utilisateur se logue

session_start();
...
$pseudo = $_SESSION['pseudo'];

en page 2 : des liens doivent apparaitre SI la variable de session existe

session_start();
if (isset($_SESSION['pseudo']))
{echo $_SESSION['pseudo'];};

En page 1, mes fonctions fonctionnent car je parviens à afficher la variable de session avec un echo (Bienvenue $_SESSION['pseudo']).
Mon test en page 2 ne fonctionne pas, alors que j'ai bien commencer ma page par un session_start()...

Quelqu'un peut il m'aider ?
Merci merci

Configuration: Windows XP
Safari 530.5

Meilleures réponses pour « PHP recuperer variable de session » dans :
PHP - Les variables Voir Concept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Concaténation VoirPHP permet de concaténer des chaînes de caractères grâce à l'opérateur "." : $concatenation= $a . $b; Ou encore pour affecter, dans la variable $a, la valeur de la concaténation de $a et de $b : $a.=$b; Pour concaténer des chaînes et des...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...
Variables d'environnement VoirVariables d'environnement Une variable d'environnement est une valeur dynamique, chargée en mémoire, pouvant être utilisée par plusieurs processus fonctionnant simultanément. Sur la plupart des systèmes d'exploitation, les emplacement de...

1

adgem0, le 16 jun 2009 à 12:36:56

Salut !
Dans ta page 1, ce serait pas plutot $_SESSION['pseudo'] = $pseudo; ??

Répondre à adgem0

2

Coralie, le 16 jun 2009 à 12:40:13

Non ca ne change rien... :(

Répondre à Coralie

3

Coralie, le 16 jun 2009 à 12:47:08

C'est dingue d'ailleurs, dans tous les tutos ou script, ca parait simple comme bonjour en utilisant un session_start, mais impossible de le faire marcher... quelqu'un aurait il une solution svp ?

merci d'avance

Répondre à Coralie

4

Nixial, le 16 jun 2009 à 13:04:30

Bonjour,

Tu as essayé de mettre dans ta page 2 simplment :

session_start();

echo $_SESSION['pseudo'];

Petite remarque en passant tu as un point virgule en trop :

if (isset($_SESSION['pseudo']))
{

echo $_SESSION['pseudo'];

}; <-- celui là

A+.

Répondre à Nixial

5

Coralie, le 16 jun 2009 à 14:00:09

Malheureusement ca ne change rien...
merci pour ton aide quand meme :(

qq'un a une autre idée ? je ne dois pas etre la seule a qui ce point pose probleme je pense... mais rien de pertinent dans les tutos et forum en ligne...

Répondre à Coralie

6

le père, le 16 jun 2009 à 14:07:43

Bonjour

Peux-tu montrer le script de tes 2 pages, s'il n'est pas trop long ?

Répondre à le père

7

Coralie, le 16 jun 2009 à 14:18:05

Page 1 :

<?php
mysql_connect("localhost", "login", "pass");
mysql_select_db("mabase");
session_start();
$loginOK = false;
if ((!empty($_POST['email'])) && (!empty($_POST['password'])) )
{
extract($_POST);
$sql = "SELECT pseudo, password FROM matable WHERE email = '".addslashes($email)."'";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
if ($password == $data['password']) {$loginOK = true;}
}
if ($loginOK) {$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['pseudo'] = $pseudo ;
}
};
mysql_close();
?>

Lien en page 1 pour aller en page 2 :

$sqlconnectes = "SELECT pseudo FROM matable";
$rqconnectes = mysql_query($sqlconnectes);
while($rang = mysql_fetch_array($rqconnectes))
{echo '<a href=profil.php?membre='.$rang['pseudo'].'>'.$rang['pseudo'].'</a>';}


Page 2 (où je teste si ma variable contient qq chose) :

<?php
session_start();
echo $_SESSION['pseudo'];
?>

Répondre à Coralie

8

le père, le 16 jun 2009 à 14:28:56

{$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['pseudo'] = $pseudo ;

J'ai l'impression que tu écrases la valeur de $data['pseudo']; avec celle de $pseudo.
$pseudo contient-il bien ce que tu crois ?

Répondre à le père

9

Coralie, le 16 jun 2009 à 14:32:02

J'avais bien pensé à ca, en page 1 j'ai fait des test echo pour afficher soit $_SESSION['pseudo'] ou $pseudo : ca fonctionne.

J'ai meme essayer de supprimer la ligne $_SESSION['pseudo'] = $pseudo
de ma page 1, avec toujours le meme résultat...

(merci lepere, c'est super sympa d'essayer de m'aider...)
Je n'ai donc toujours pas de solution :(

Répondre à Coralie

10

le père, le 16 jun 2009 à 14:40:23

Je ne comprends pas très bien la logique de ton programme, mais ce n'est pas grave pour l'instant, ça n'explique pas ton problème

Peux tu modifier dans ta 1ère page :

if ($loginOK) {
$_SESSION['pseudo'] = $data['pseudo'];
echo '**',$_SESSION['pseudo'],'**';
}
et voir si ça affiche ou non la bonne valeur ?

Répondre à le père

11

Coralie, le 16 jun 2009 à 14:52:42

J'ai fait ce que tu as proposé :
- sur la page 1, ça s'affiche bien
- sur la page 2, seules les étoiles s'affichent...

Pour répondre a ta question :
- la page 1 est une home, où se trouvent une brique d'identification et une liste pseudos (dirigeant vers les pages profil : page 2)
- la page 2 est donc une page profil où sont listées plusieurs infos

Je veux afficher un lien en plus sur la page 2 "Lui écrire" permettant aux membres connectés de voir ce lien.
En gros sur la page 2 :
- si le membre est connecté
> afficher le lien "Lui écrire"

Pour cela il faut que je récupère la variable de session...

Répondre à Coralie

12

le père, le 16 jun 2009 à 15:04:34

Je ne comprends toujours pas. Je ne vois pas ce qui permettra de savoir si les autres membres sont connectés ou pas. Chacun ne verra que lui-même Il y a peut-être un malentendu fondamental sur ce que sont les variables de session.
Pour voir la page 2, tu cliques bien sur l'un de tes liens de la page 1? et c'est à ce moment que la page home est remplacée par la page profil, et que tu ne retrouves pas ta variable de session ?

Répondre à le père

13

Coralie, le 16 jun 2009 à 15:37:20

Ma liste de connectés est une requete sql que je n'ai pas mis plus haut, mais qui fonctionne très bien.
Il n'y a pas de malentendu, ma variable de session me permettra d'afficher un lien sur la page 2, SI l'utilisateur est loggué.

Ca parait simple mais c'est un schmilblick sans nom :)

Répondre à Coralie

14

le père, le 16 jun 2009 à 15:42:16

Ok, mais peux-tu me confirmer que pour voir la page 2 tu cliques sur un lien de la page 1, tu ne te contentes pas de rafraichir la page 2 ou de la rouvrir en tapant l'adresse ?
Au fait, travailles-tu en local, ou as-tu un lien sur lequel on peut voir ce qui se passe ?
As-tu des messages d'erreurs que tu aurais considérés comme négligeables ?

Répondre à le père

15

manelsousse, le 16 jun 2009 à 17:36:20

Tout vas ben comme ca normalement pouvez vous ecrire tout le code pour bien visualiser l'erreur?

Répondre à manelsousse

16

Coralie, le 16 jun 2009 à 18:38:50

Oui pour aller en page 2, il faut cliquer sur le lien en page 1...
je ne bosse pas en local, mon site de test est hebergé chez free

Répondre à Coralie

17

le père, le 16 jun 2009 à 23:53:21

As-tu créé un répertoire "sessions" à la racine de ton site ? c'est obligatoire chez free pour que les sessions marchent. Mais sans ce répertoire, tu aurais dû avoir des messages d'erreur.
Si ton site est hébergé chez free, peux-tu donner l'adresse et créer un identifiant bidon pour que je puisse faire la manip et voir le problème ?

Répondre à le père

18

 Coralie, le 17 jun 2009 à 11:41:20

Mon dossier sessions existe bien, les fichiers sont bien créés à l'intérieur...
je ne peux pas donner un accès à mon ftp, désolé

Répondre à Coralie