2013-06-30 6 views
0

Ma tmp n'est pas accessible par php.Hence, les séances ne peuvent pas vraiment travailler (et ils ne le font pas) mais dans ce cas, ils le font pour une raison inconnue.sessions Php comportement bizarre

Voici le scénario,

J'ai une index.php page qui vérifie une des informations d'identification des utilisateurs et définit les variables de session et redirige l'utilisateur vers panel.php

if($verified) 
{ 
$_SESSION['unid']=$unid; 
$wel="Welcome :"; 
$_SESSION['una']=$user; 
$_SESSION['level']=$lev; 
$_SESSION['pas']=$pass; 
$_SESSION['wel']=$wel; 
header("location:panel.php"); 
} 

Sur le panel.php je le code,

<?php 
ob_start(); 
if(session_id()==''){ 
session_start(); 
} 

if($_SESSION['una'] == "") 
{ 
header("location:index.php"); 
} 

Lorsque je me connecte par le biais index.php, Bien que ne peuvent pas être lues les données de sessions, panel.php ouvre comme il le ferait normalement avec des sessions

En rechargeant la page, les sessions sont partis et page réoriente!

Toute explication de ce comportement?

PHP V5.3.10

+0

Où allez-vous commencer la '' session' sur index.php'? – Boris

+0

A la toute première ligne, j'ai session_start(); –

Répondre

0

Vous devez toujours appeler session_start() au début de votre page. Il ne démarre pas réellement une nouvelle session, mais initialise plutôt la session, y compris le chargement des variables de session. C'est habituellement la première chose que vous faites, et habituellement pas seulement dans des conditions comme dans votre panel.php actuel.

+0

J'ai juste besoin d'une logique pour savoir pourquoi les conditions de session sont satisfaites ou semblent être satisfaites sur la page suivante quand les sessions ne sont jamais stockées! Je sais session_start() doit être placé au début .. mais j'ai délibérément mis en place le code de la façon dont il est. Je suis capable de se connecter et de rediriger immédiatement la demande (modification des en-têtes) à une autre page (qui nécessite une connexion aussi) et ça marche! mais après la première demande, les sessions reviennent à leur comportement normal. –

+0

Si les informations de session ne sont pas stockées, toutes les informations de session seront supprimées à la fin de chaque requête. Ainsi, lorsque vous dirigez vers l'autre page, l'autre page ne sait rien sur les variables de session de la précédente. Une redirection est en fait juste une nouvelle demande. C'est simplement un en-tête dans la réponse qui indique au navigateur de faire une nouvelle requête. Ce n'est pas que l'information de session est en quelque sorte partiellement persistante si vous êtes juste assez rapide ... – GolezTrol

+0

EXACTEMENT !! C'est exactement la raison pour laquelle j'ai commencé ce fil .. C'est exactement ce que j'avais dans la tête mais ce cas bizarre m'a fait réfléchir! Je suppose que cela a quelque chose à voir avec la configuration du serveur. –