Page 1 sur 1

Je perds les variables SESSION d'une page à l'autre

Posté : 10 juil. 2009, 19:05
par dhjapan
Bonjour,

J'ai un soucis de sessions qui ne transmettent pas les variables d'une page à l'autre.

J'ai cette page test :

Code : Tout sélectionner

<?php header('Content-type: text/html; charset=UTF-8'); // CONFIG VARS + CONNEXION MYSQL include_once ("../includes/_config.php"); session_start(); print_r($_SESSION); $_SESSION["test"] = "ok"; ?> <html> <body> <?php print_r($_SESSION); ?> </body> </html>
Là tout va bien, quand je rafraichis ma page le premier "print_r($_SESSION); " affiche bien la variable $_SESSION["test"].

Mais sur une autre page beaucoup plus compliqué la variable ne passe pas, pourtant print $_SESSION tout à la fin de la page et $_SESSION["test"] est bien égale à "ok" :

Code : Tout sélectionner

... <?php print_r($_SESSION); ?> </body> </html> <? // DECONNEXION MySQL mysql_close(); ?>
Donc manifestement il se passe quelque chose qui fait que $_SESSION va être vidé entre mes 2 affichages.

Est-ce que je peux faire quelque chose dans mon code qui commanderait la disparition de ma $_SESSION au rechargement ?

Pour info :
- dans _config.php je ne fais que definir quelques varaibles, et établir ma connexion SQL
- dans ma class d'autentification je vais tester le login et le mot de pass pour ensuite mettre à jour les variables de SESSION, je m'y prends comme celà :

Code : Tout sélectionner

... function login($uname, $pword) { global $_SESSION; ... }

Merci d'avance pour votre aide.

Posté : 10 juil. 2009, 19:32
par dunbar
Salut,

A tu placer un session_start() sur toutes tes pages :?:

Posté : 10 juil. 2009, 19:44
par dhjapan
Bonjour,

j'avais bien session_start() partout... en fait ma page etait encodé en utf-8, je me suis aperçu que mon fichier test etait en ANSI ... du coup si je passe ma page en utf-8 without BOM ca fonctionne.

C'etait juste ça.

Maintenant j'ai une petite question, quel l'ordre correct de ses elements :
- header('Content-type: text/html; charset=UTF-8');
- connexion SQL mysql_select_db(...);
- demarrage de la session session_start()
..est-ce qu'il y a un ordre qui mieux qu'un autre ?


Merci beaucoup pour ton aide.

Posté : 10 juil. 2009, 19:46
par dunbar
Le session_start() doit toujours être placer avant tout autre code.