session_destroy + back = session active ???

session_destroy + back = session active ??? - PHP - Programmation

Marsh Posté le 23-04-2007 à 09:18:22    

bonjour,
je reprends du code d'un collègue...
le code de redirection fonctionne bien mais...  
quand je fais un back, je reviens sur la page avec la session qui toujours là et active... :pt1cable:  
malheureusement j'ai des frames, d'où le code de redirection en js.
 
 
mon fichier logout.php :
 

Code :
  1. <?
  2. session_start();
  3. $_SESSION = array();
  4. if (isset($_COOKIE[session_name()])) {
  5.     setcookie(session_name(), '', time()-42000, '/');
  6. }
  7. session_destroy();
  8. echo "<script>top.document.location.href='../index.html';</script>";
  9. exit;
  10. ?>


 
Note: travail sur XAMPP en local.
 
a quoi cela est-il dû ?
 
Merci d'avance de vos réponses.
 
KB

Reply

Marsh Posté le 23-04-2007 à 09:18:22   

Reply

Marsh Posté le 23-04-2007 à 09:27:36    

détruis aussi les variables de session ...
 
$_SESSION = array();
session_destroy();

Reply

Marsh Posté le 23-04-2007 à 09:34:35    

c'est ce que j'ai mis ...
 
j'ai enlevé le  

Code :
  1. if (isset($_COOKIE[session_name()])) {
  2.     setcookie(session_name(), '', time()-42000, '/');
  3. }


car il n'y a pas de cookie, en fait.
 
j'ai donc :

Code :
  1. <?php
  2. session_start();
  3. $_SESSION = array();
  4. session_destroy();
  5. echo "<script>top.document.location.href='../index.html';</script>";
  6. exit;
  7. ?>

Reply

Marsh Posté le 23-04-2007 à 10:55:07    

Après avoir fait "Back", tu as essayé d'accéder à une page qui nécessitait la session? C'était peut-être simplement la cache du navigateur qui te renvoie une page identique ;)  Si tu veux que la page soit d'office rechargée, il faut changer les headers de ta page.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 23-04-2007 à 12:14:08    

Citation :

Après avoir fait "Back", tu as essayé d'accéder à une page qui nécessitait la session?


oui

Citation :

C'était peut-être simplement la cache du navigateur qui te renvoie une page identique ;)  


peut-être mais après je navigue avec la session active.

Citation :

Si tu veux que la page soit d'office rechargée, il faut changer les headers de ta page.


je ne veux pas que les pages d'avant (avec session) soient accessibles.
les headers ? de quelle page ?
 
frame menu + frame corps
    |
   \|/
  logout.php  ===> index.html (ok) puis si + back ===> frame menu + frame corps (connecté), pas ok...
 
j'ai fait un test sans frame sur 2 pages et ca fonctionne apparemment bien.
 
je me demande donc pourquoi les frames gardent la session...

Reply

Marsh Posté le 23-04-2007 à 12:44:51    

les headers des pages accessibles uniquement par session a priori. Un truc genre:
 

Code :
  1. header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');


 
(je ne suis pas un pro des headers mais c'est une bonne piste)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 23-04-2007 à 14:18:17    

Et ta session il reste quelque chose dedans? Je penche aussi pour une histoire de cache :) Pour les entêtes, c'est sur lles pages que tu veux pas mettre en cache, donc sur les pages où la session à son rôle à jouer ;)

Reply

Marsh Posté le 23-04-2007 à 15:49:31    

je ne sais pas s'il reste quelque chose dedans. J'ai bien l'impression que oui, puisque je navigue après sans soucis.
comment faire pour le savoir, sachant que la redirection se fait sur du html ?
par contre sans faire de redirection, mais en copiant un lien à session dans la barre url, l'accès est coupé avec le message qui va bien...

Reply

Marsh Posté le 23-04-2007 à 15:52:10    

Donc c'est bien le cache qui fait son boulot ;)
Suffit de faire un print_r($_SESSION) en tête de page pour voir s'il reste quelque chose dedans :spamafote:
 
Si ça t'affiche rien, c'est que la page est pas regénérée ==> cache

Reply

Marsh Posté le 23-04-2007 à 16:00:10    

et le header('cache-control...
je le mets où exactement ?
entre quelle et quelle balise ?  
pour lors il est après le session_start();
et ca marche pas.

Reply

Marsh Posté le 23-04-2007 à 16:00:10   

Reply

Marsh Posté le 23-04-2007 à 16:07:04    

Il faut invoquer les commandes header avant le session_start, car celui-ci déclenche l'envoi d'un cookie et header ne fonctionne pas si quelque chose est déjà envoyé au navigateur.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 23-04-2007 à 18:15:28    

Si je ne m'abuse, le header peut être envoyé tant que l'ouput n'a pas été solicité :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 23-04-2007 à 18:32:34    

Oui mais la session déclenche l'envoi d'un cookie, et le cookie fait partie de l'output ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 23-04-2007 à 18:38:04    

S'pa impossible :o :jap:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed