2011-01-14 4 views
1

J'utilise une variable de session pour m'authentifier, à ma connaissance la variable de session est censée être stockée sur le serveur même lorsque de nouvelles pages sont chargées. J'utilise le code suivant:php session variable expiring

<?php 
session_start(); 
echo $_POST['path']; 

if($_POST['path']=="index") 
{ 
    $_SESSION['rightPath']=1; 
    if(isset($_SESSION['rightPath'])) 
     echo "it is set"; 
    ?> 
    <script type="text/javascript">parent.location='UI.php'</script> 
    <?php 
} 
else 
{?> 
<script type="text/javascript">parent.location='index.php'</script> 
<?php 
} 
?> 

ici cette fonction isset me dit que la variable est définie, mais dans la page suivante ui.php est-il pas me donner le même résultat.

<?php 
    if(!isset($_SESSION['rightPath'])) 
    { 
     echo "it not is set";?> 

<?php } 
?> 

Ceci est l'extrait de page ui.php. ici l'instruction if est en cours d'exécution.

qu'est-ce que je fais mal?

Répondre

5

vous devez commencer la session ici est bien

<?php 
     session_start(); 
     if(!isset($_SESSION['rightPath'])) 
     { 
      echo "it not is set";?> 

    <?php } 
    ?> 
+0

merci beaucoup ... j'étais sous l'impression que puisque je n'avais pas détruit la session je n'avais pas besoin de démarrer à chaque page ... – user434885

+0

Vous êtes toujours les bienvenus :) – shankhan

+0

N'oubliez pas d'avoir 'session_destroy()' si les données de session ne sont plus nécessaires dans les cas tels que la déconnexion de l'utilisateur. –

3

Vous êtes ne pas commencer la session à UI.php. Le code doit être comme ça, avec session_start en haut:

<?php 
session_start(); 

if(!isset($_SESSION['rightPath'])) 
{ 
    echo "it not is set";?> 
} 
?> 

Le session_start() crée une session ou reprend celui en cours. Ainsi, pendant que vous créez la session plus tôt, il n'est pas repris sauf si vous effectuez un nouveau session_start() sur chaque page où vous avez l'intention d'utiliser les variables de session.