session_destroy();

non riesco a distruggere una sessione

ho prvato a mettere

session_destroy();

ma controllando nel db la sessione è sempre quella!

in questa pagina apro la sessione <? session_start(); $ID_SESSION = session_id(); ?>

poi dopo un pò di codice php e html

inserisco

session_destroy(); prima della chiusura del php ma non la distrugge!

cosa sbaglio? devo per caso dichiarare quale sessione distruggere?...sarebbe l'unica.

grazie

inviato 10 anni fa
yusizu
X 0 X

se la sessione è nel database la sessione non la distruggi con session_destroy();

ma devi fare una query del tipo :

DELETE * FROM sessions WHERE SID='[sessionid]' LIMIT 1;

se invece le sessioni sono i file temporanei che php crea nel server basta usare i costrutti

session_unset()

o

session_destroy()

e per vedere se l'ha eliminata ti basta fare un print_r($_SESSION);

oppure vedere nei cookie del sito se c'è PHPSID o SID

ciao! :bye: ci vediamo a settembre

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Per chiudere una sessione, ovunque essa sia, basta eseguire questo codice:

<?php 
session_start();

// cancello tutti i dati di sessione
$_SESSION = array();

// Cancelliamo l'eventuale cookie di sessione
if (isset($_COOKIE[session_name()]))
{
   setcookie(session_name(), '', time()-42000, '/');
}

// distruggiamo la sessione
session_destroy();
?>

garantito dalla documentazione ufficiale:

http://it2.php.net/manual/en/function.session-destroy.php

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

<ot>le elimina anche dal db???</ot>

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

si, se sono state implementate correttamente

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

sei un GRANDE!!!

 ;)

risposto 10 anni fa
yusizu
X 0 X

...solo che ho un piccolo problema:

ricevo quest'errore:

Warning: Cannot modify header information - headers already sent by (output started at /web/htdocs...

mentre nella pagina in cui l'avevo provato funzionava alla perfezione!

 :'(

risposto 10 anni fa
yusizu
X 0 X

ok risolto....mi sono ricordato le tue strillate " non bisogna mandare niente prima in output...."

 ;) ;D

 :bye:  e grazie ancora

risposto 10 anni fa
yusizu
X 0 X

 O0

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda