2010-01-21 6 views
0

Je fais un sondage de 10 questions avec une question à un point. J'ai fait une session pour passer des valeurs entre les questions. la chose que j'ai découverte est que les valeurs de session ne sont pas détruites même lors d'une actualisation de page. Y at-il une solution de contournement ou suis-je faire quelque chose de mal.La session php ne se détruit pas lors de l'actualisation

juste pour rendre les choses claires, voici le code:

session_start(); 
// $_SESSION['score'] = $score; 
    $_SESSION['qnum'] = isset($_SESSION['qnum']) ? $_SESSION['qnum']+1 : 1; 

    if ($_SESSION['qnum'] < 10){ 
     $_SESSION['total'] = isset($_SESSION['total']) ? $_SESSION['total']+$score : $score; 
    } 
    else if ($_SESSION['qnum'] == 10){ 
     $_SESSION['total'] = isset($_SESSION['total']) ? $_SESSION['total']+$score : $score; 
     echo "finished"; 
    } 

    echo $_SESSION['qnum']; 
    echo '\n'; 
    echo $_SESSION['total']; 

Répondre

5

$ _SESSION les variables resteront jusqu'à ce que vous mettez fin à la session ou unset() la variable de session.

Pour terminer une session essayez ce code:

$_SESSION = array(); 
session_unset(); 
session_destroy(); 

Pour supprimer une utilisation variable de session:

unset($_SESSION['variablename']); 
+2

Et les variables $ _SESSION sont construites pour survivre à la conception de rafraîchissement de page. Difficile de garder l'utilisateur connecté autrement. –

+0

Avec le code ci-dessus, comment suggérez-vous de détruire la session? Je veux dire que si je détruis la session juste après le code ci-dessus, ne rendra-t-il pas difficiles les appels de passage? – amit

+0

Si vous détruisez toute la session, cela annulera le but de la session qui est de suivre les données sur les pages a.k.a. pour une session. Vous avez probablement juste besoin de supprimer des variables de session individuelles lorsqu'elles ne sont plus nécessaires. –

2

C'est le point de l'ensemble des séances - ils collent autour de la session de navigation. Vous les utilisez comme des variables courantes, ce qui me pousse à me demander: pourquoi ne pas utiliser simplement des variables normales?

0

Il s'agit de toute la beauté et du concept de variable de session qu'elle ne détruira pas jusqu'à ce que vous la détruisiez ou la désactiviez. Quel est le problème, votre code est complètement correct, Vous enregistrez le numéro de la question et le score total en tant que variable de session et marquer comme un local .just faire une chose à la fin du Quiz détruire la session en utilisant sesion_destroy

0

Caché les variables peuvent être un meilleur outil à utiliser pour votre objectif. Les variables de session par nature sont construites pour durer toute l'application session.

Questions connexes