$_SESSION a un comportement bizarre

Signaler
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
121
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
30 décembre 2010
-
Bonjour,

Mon site Internet comporte une partie administration qui utilise les sessions pour vérifier que quelqu'un est authentifié.
Lorsqu'on s'identifie, la page admin.php cherche donc dans la base MySQL le "profil" de l'utilisateur.
J'utilise alors un petit bout de code tout simple :

foreach($result as $key => $value)
    $_SESSION[$key] = $value;

...avec $result qui est un tableau contenant le premier résultat de la requête

Jusqu'ici tout va bien puisque si j'écris juste en dessous :
echo $_SESSION['id'];
...cela m'affiche ce que je veux

Manque de chance, quand je charge une autre page qui utilise les sessions, il me dit que $_SESSION['id'] n'est pas défini...

J'ai ainsi essayé de trouver le problème, et j'ai remarqué que si j'écrivais :
$_SESSION['id'] = 1;
...cela fonctionnait (en chargeant l'autre page)

Alors que :
$key = 'id';
$_SESSION[$key] = 1;
...ne fonctionne pas

6 réponses

Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
La question c'est est-ce qu'il faut que je me contraigne à écrire :
$_SESSION['id'] = $result['id'];

$_SESSION['nom] = $result['nom'];

$_SESSION['prenom'] = $result['prenom'];
...
(j'en ai beaucoup)

ou est-ce qu'il y a une solution ?
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
7
Salut,

Non, ca devrait fonctionner avec $_SESSION[$key]...

Mais, avant tout :
* Es-tu sûr que $key vaut bien 'id' (et non 'ID' ou 'Id' ou...)
* Démarres-tu la gestion des sessions dans la deuxième page (celle qui pose pb) avec session_start() ?

Ensuite, pour connaitre le contenu de ta session : print_r($_SESSION);

A+
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
La deuxième page commence bien par session_start (j'avais déjà vérifié)
D'autant plus que si j'écris :
$_SESSION['id'] = 1;
Cela fonctionne bien dans la deuxième page

J'ai rajouté un print_r($_SESSION); en dessous, et j'obtiens :
Array
(
[0] => 1
[id] => 1
[1] => #
[nom] => #
[2] => #
[prenom] => #
...
)

...ce qui semble correct

Comme je l'ai déjà dit plus haut, j'ai essayé un :
echo $_SESSION['id'];
...juste après le foreach, et cela fonctionne
Messages postés
283
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
4 juillet 2007
2
Apparemment quand je mets la page en ligne (chez nexenservices), cela fonctionne
Mais toujours pas en local....

Je vais laisser tomber et énumérer chaque élément un à un, comme dans mon deuxième message
Messages postés
121
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
30 décembre 2010

Il faut toujours mettre un session_start
Messages postés
121
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
30 décembre 2010

Enfin je veux dire que dans ton cas il faut mettre un session_start toutes pages qui utilisent les sessions