mamma che confusione.
Se viene usato lo stesso session_id ma la sessione e' vuota "chettefrega".... Se fai le cose correttamente una volta che gli hai sparato un $_SESSION=array() stai pur certo che nel file di sessione non c'e' piu' trippa per i gatti....
Se vedi qualcosa lo vedi per via della cache del browser. Non dimenticare che se client e server condividono le stesse risorse (stesso pc) non e' manco chiaro stabilire dove inizia il server e dove inizia il client.
Ti metto due file aa1.php e aa2.php ... prova a giocarci su, fai dei refresh, passa da pag1 a 2 e viceversa.... ho impostato il time out sia lato server che client a 20 secondi.... azzolo se cambia il session_id dopo 20 secondi... ma quello che conta e' che la sessione sara' VUOTA dopo avere eseguito $_SESSION = array() oppure alla scadenza del cookie/file di sessione....
file aa1.php
Codice PHP:
<?php
// time out lato server e cookie impostato a 20 secondi
ini_set('session.gc_maxlifetime', '20');
ini_set('session.cookie_lifetime', '20');
session_start();
echo "<pre>";
if(empty($_SESSION)) {
echo "Sessione vuota
Session id: " .session_id();
echo "
tutti a nanna
";
print_r($_SESSION);
echo "Ora valorizziamo la sessione in vari modi
1) trasferendo un array completo
2) con un ciclo foreach
3) con singoli valori";
$_test1 = array('one'=> 'first','two' => 'second', 'last'=>'last');
$_test2 = array('foo1'=> 'firstfoo','foo2' => 'secondfoo', 'foolast'=>'lastfoo');
//1
$_SESSION = $_test1;
//2
foreach($_test2 as $key => $value) {
$_SESSION[$key] = $value;
}
//3
$_SESSION['user'] = 'pippo';
$_SESSION['id'] = session_id();
} else echo "la sessione non e' vuota
";
echo '
----
Valori inseriti ora in $_SESSION, valori che passo alla pag.2
';
print_r($_SESSION);
echo "
<a href=\"aa2.php\">to page 2</a>";
?>
file aa2.php
Codice PHP:
<?php
// time out lato server e cookie impostato a 20 secondi
ini_set('session.gc_maxlifetime', '20');
ini_set('session.cookie_lifetime', '20');
session_start();
print session_id();
print "<pre>";
if(empty($_SESSION['id']) OR $_SESSION['id'] != session_id() )
{ echo "
sessione non valida"; }
else echo "
ok sessione valida";
if(!empty($_SESSION) ) {
print "
<pre>";
print_r($_SESSION);
} else {
print ('
$_SESSION is empty
');
}
print "[url='aa1.php']to page 1[/url]
";
// azzero la sessione
$_SESSION = array();
session_destroy();
echo "Sessione azzerata
";
print_r($_SESSION);
?>
cambia il timeout con valori che ti pare e verifica che succede.