Perché il PHP session_destroy () non funziona?

Cerco di distruggere tutte le variabili sesion usando il metodo session_destroy() , ma dopo aver usato il metodo, i valori non vengono distrutti.

Perché session_destroy() non funziona?

C’è un altro modo per distruggere la sessione in PHP?

 if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { session_destroy(); session_unset(); } 

Dopo aver usato session_destroy() , la sessione viene distrutta dietro le quinte. Per qualche ragione questo non influisce sui valori in $_SESSION , che era già compilato per questa richiesta, ma sarà vuoto nelle richieste future.

È ansible cancellare manualmente $_SESSION se lo si desidera ( $_SESSION = []; ).

Forse è troppo tardi per rispondere, ma assicurati che la tua sessione sia inizializzata prima di distruggerla.

 session_start() ; session_destroy() ; 

cioè non puoi distruggere una sessione in logout.php se hai inizializzato la tua sessione in index.php. È necessario avviare la sessione in logout.php prima di distruggerlo.

Se è necessario cancellare i valori di $_SESSION , impostare la matrice su un array vuoto:

 $_SESSION = array(); 

Naturalmente, non puoi accedere ai valori di $_SESSION su un’altra pagina dopo aver chiamato session_destroy , quindi non importa più di tanto.

Prova quanto segue:

 session_destroy(); $_SESSION = array(); // Clears the $_SESSION variable 

In realtà, funziona, ma devi anche fare $_SESSION = array(); dopo il session_destroy per eliminare le variabili $ _SESSION. Tuttavia, evitare di eseguire unset($_SESSION) perché ciò rende le sessioni inutili.

Bene, questo mi sembra un nuovo problema, usando un nuovo server php. In passato non ha mai avuto un problema con le sessioni che non finivano.

In un test di sessioni, ho impostato una sessione, ho eseguito un conteggio delle sessioni ++ e chiuso la sessione. Reloaded la pagina e con mia sorpresa la variabile è rimasta.

Ho provato il seguente suggerimento pubblicato da mc10

 session_destroy(); $_SESSION = array(); // Clears the $_SESSION variable 

Tuttavia, questo non ha funzionato. Non pensavo che potesse funzionare poiché la sessione non era triggers dopo averla distrutta, quindi l’ho invertita.

 $_SESSION = array(); session_destroy(); 

Funzionava, ricaricando la pagina iniziando sessios e rivedendo le variabili impostate tutte mostrate vuote / non impostate.

Davvero non sono sicuro del perché session_destroy () non funzioni su questo server PHP versione 5.3.14.

Non mi interessa davvero se so come cancellare le sessioni.

session_destroy() è efficace dopo il caricamento della pagina. Quindi nel secondo caricamento, la sessione è terminata. Ma con unset() puoi anche uscire dalla pagina.

Funziona, ma a volte no (controlla l’esempio qui sotto)

 < ?php session_start(); $_SESSION['name']="shankar"; if(isset($_SESSION['name'])) { echo $_SESSION['name']; // Outputs shankar } session_destroy(); echo $_SESSION['name']; // Still outputs shankar 

Strano!! Destra ?

Come superare questo?

Nello scenario precedente, se si sostituisce session_destroy(); con unset($_SESSION['name']); funziona come previsto.

Ma voglio distruggere tutte le variabili non solo una sola!

Sì, c'è una soluzione anche per questo. Basta disinserire l'array $_SESSION . [ Crediti Ivo Pereira ]

 unset($_SESSION); 

Aggiungi session_start (); prima! Dichiarazione di Doctype

  < ?php session_start(); ?> < !doctype html>   < ?php if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) { session_destroy(); session_unset(); } ?>