$_SESSION a un comportement bizarre

CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 - 4 juil. 2007 à 10:21
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010 - 4 juil. 2007 à 13:37
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

CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
4 juil. 2007 à 10:33
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 ?
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
4 juil. 2007 à 10:45
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+
0
CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
4 juil. 2007 à 11:05
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
0
CyberP Messages postés 283 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 4 juillet 2007 2
4 juil. 2007 à 11:08
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
4 juil. 2007 à 13:37
Il faut toujours mettre un session_start
0
cs_morpheus57 Messages postés 121 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 30 décembre 2010
4 juil. 2007 à 13:37
Enfin je veux dire que dans ton cas il faut mettre un session_start toutes pages qui utilisent les sessions
0
Rejoignez-nous