2010-11-01 20 views
1

Voici la version simplifiée de mon codePHP variables de session ne collait pas

<?php session_start(); 
    if($_GET['page'] == "login") 
    { // process username/password 
     if(login is successful) 
      $_SESSION['access'] = "dev"; 
    } 
    else if($_GET['page'] == "request") 
    { 
     //get some data from an xml file using simplexml 
    } 
?> 
<?php if(!isset($_SESSION['access']) { ?> 
    <!-- display login form. submits to this page + ?page=login --> 
<?php } else { ?> 
    <!-- display edit form, nothing more than a textarea, a select and a submit button. --> 
    <!-- The form points to this page + ?page=request --> 
<?php } ?> 

Qu'est-ce qui se passe est quand je me connecte $ _SESSION [ « accès »] est réglé correctement, mais lorsque je soumets à nouveau des données à la page récupérer des données le $ _SESSION ['accès'] est désactivé et le formulaire de connexion s'affiche à nouveau.

Qu'est-ce que je fais mal? Je suis relativement nouveau à PHP.

Répondre

2

Vous devez stocker explicitement les données dans la session. session_start ouvre la session pour la lecture/écriture, mais ce qui est écrit ne colle pas tant que vous ne le faites pas explicitement.

http://www.php.net/manual/en/function.session-write-close.php

Utilisez cette fonction.

+1

C'est un non-sens. Il est même indiqué sur la page même du manuel que vous liez à 'session_write_close' n'est généralement pas nécessaire. – deceze

+0

Oui, * habituellement * vous n'avez pas. Mis à part que c'est une bonne pratique de le faire (similaire à la fermeture de votre connexion à la base de données ou à la fermeture d'un fichier), si les données ne sont pas enregistrées, vous devez l'appeler. – LonnyLot

+0

J'ai essayé de placer la fonction partout dans mon code et elle ne sauvegarde toujours pas mes données = ( – Akinos