Php session

di il
1 risposte

Php session

Ciao a tutti abbiamo un problema con le sessioni, non riusciamo a distruggere il PHPSESSID sul server e di conseguenza la sessione che sembra immortale.Questo è il codice, usiamo volutamente HTTP_SERVER...al posto di $_SERVER, possibile che destroy() non distrugga nulla?aiuto, please...

<?php
header("Cache-control: private");//boh!

session_start();
session_id();


foreach ($HTTP_SERVER_VARS as $ss){
print $ss."<br>";
}
session_unset();
session_destroy();//non funziona?

foreach ($HTTP_SERVER_VARS as $ss)
{
print $ss."<br>";//PHPHSESSID non è stato cancellato da
//destroy()
}


?>

il c# è un linguaggio tagliente...

1 Risposte

  • Re: Php session

    Mettici il header dopo l'apertura della sessione, o meglio ancora, dopo che hai finito l'interrogazione.

    header() inizia una sessione per conto proprio, e quindi puoi fare quel che vuoi, finché non azzeri quello, e non so se si può, la sessione rimane aperta.

    Poi, successivamente, il print crea un'altra sessione, con un proprio id.

    Il session_start() crea una sessione volatile, che viene mantenuta fino al prossimo script. Se lo script successivo non riapre la sessione, è automaticamente chiusa. E' un po' difficile da spiegare.

    Mettiamo che hai una pagina di login, dove c'è session_start() nella prima riga. Poi premi Invio, e la pagina viene chiusa, e con POST o GET invii username e password al server, a uno script differente. Se questo script ha session_start(), la sessione verrà mantenuta, se non ce l'ha, e come se fosse iniziata una nuova sessione.

    Questo meccanismo è molto comodo per tenere la sessione aperta senza impiegare dei cookie. C'è scritto anche nel manuale PHP, che session_start() deve essere prima di un qualsiasi output, quali header, print, echo. Altrimenti non funziona.

    Prova per credere...

    Giovanni
    ---
    http://www.y2ksw.com/vbulletin
Devi accedere o registrarti per scrivere nel forum
1 risposte