Je perds totalement ma session, sauf que cette dernière semble fonctionner si je ferme l'onglet Firefox et revient. Voici la trace de mon problème:
1) Dès l'entrée sur le site, il se crée un fichier nommé « sess_c65e48e76537ac9b875abef4ba992a2d » dans mon
répertoire c:\tmp (save_path). Ce fichier vide (0kb) est probablement créé par mon session_start() dans mon
fichier header.inc.
2) J'entre mon nom d'utilisateur/mot de passe et j'appuie sur le bouton « Connecter ». Le formulaire appelle un
fichier contenant le code pour procéder à l'authentification et la mise en $_SESSION["Member"] les informations
sur le membre connecté.
Tout fonctionne à merveille sauf qu'il se crée un nouveau fichier de session nommé « sess_5ef2b3a24c832c22a83ae3035e21ddc3 »
de 1kb contenant mon objet Member sérialisé.
3) Ma variable $_SESSION["Member"] reste vide dans tout le site, il n'y a rien à faire...
4) Je ferme l'onglet (j'utilise Firefox) et je retourne sur mon site et là, je suis connecté et tout fonctionne à merveillé! Il ne
s'est pas recréé de fichier dans le répertoire c:\tmp.
Qu'arrive-t'il? Pourquoi se crée-t-il un deuxième fichier de session, mais que l'application semble connectée sur le premier? Le seul truc
qui me vient en tête c'est le fait qu'une fois la validation du mot de passe effectuée, je fais un header("Location: index.php?tab=favoris");
J'ai remarqué cette note dans la documentation PHP:
Note : Session ID is not passed with Location header even if session.use_trans_sid is enabled. It must by passed manually using SID constant.
Quelqu'un peut m'aider?
Contenu de mes fichiers connexion.php et header.inc:
connexion.php
header.inc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php include("../header.inc"); $ME_Nickname = $_POST["ME_Nickname"]; $ME_Password = md5($_POST["ME_Password"]); $Member = validatePassword($db, $ME_Nickname, $ME_Password); if (is_object($Member)){ $_SESSION["Member"] = serialize($Member); header("location: " . SITE_URL . "index.php?tab=favoris"); exit(); } else { echo "Mauvais mot de passe"; } include("../footer.inc"); ?>
Merci!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php session_start(); define(SITE_PATH, $_SERVER["DOCUMENT_ROOT"] . "/test/site/"); define(SITE_URL, "http://127.0.0.1/test/site/"); require(SITE_PATH . "includes/c_objects.inc"); require(SITE_PATH . "includes/db.inc"); require(SITE_PATH . "includes/functions.inc"); $db = connect(DATABASE_NAME, DATABASE_USERNAME, DATABASE_PASSWORD); ?>
Partager