La sessione ha due vite. Una lato server che scade di suo per inattivita' determinato dal timeout impostato da qualche parte (e' PHP_INI_ALL), una lato CLIENT che di default (e' pure questa impostazione PHP_INI_ALL) scade alla chiusura del browser.
Dove e' allora il problema.... ? Se dal lato client non si chiude il browser il cookie di sessione continua ad essere valido. session_start() legge il cookie e cerca se un file di sessione con lo stesso id e' gia' presente e il timeout non sia scaduto (viene letta data/ora ultima apertura file), se non e' presente alcuna sessione valida ne aprira' una nuova.
Se hai rimosso il contenuto di $_SESSION al controllo risultera' "vuoto" e prendera' la decisione stabilita nel if...
Se rivedi gli stessi dati devi fare attenzione alla cache del browser che ripresenta gli stessi dati.
Verifica il contenuto nel file di sessione e controlla se viene svuotato oppure no con $_SESSION = array().
ps,: metti sempre un exit; dopo gli header location.

Rispondi quotando