Grazie per la risposta,
ho provato e purtroppo non funziona ancora, o meglio funziona ma come prima, ovvero esce correttamente, ma poi le variabili di sessione sono ancora memorizzate.
Spiego piu' in dettaglio:
Ho uno script di login in home, con action la stessa pagina. Quindi in home subito dopo aver aperto la sessione, controllo le variabili ricevute per $_POST e assegno diversi valori alla variabile $error, a seconda dei casi, che poi analizzo con uno switch. Solo se il login avviene correttamente, assegno dei valori alle variabili di $_SESSION. Ora per vedere dove puo esse il problema del logout, se le variabili di $_POST sono vuote, scrivo "Nessuna info", Se invece il login avviene correttamente, stampo "Login avvenuto con successso". Inoltre, tramite la funzione print_r, stampo il contenuto dell'array $_SESSION.
Ora, quando giungo in home per la prima volta, a video stampa: Nessuna info. Array()
Quindi ok, tutto corretto.
Eseguo il login e stampa: Login avvenuto con successo Array(pieno, con tutti i valori)
Eseguo il logout e di nuovo Nessuna info, Array()
Se ritorno sulla home, invece, stampa: Nessuna info, ma Array(pieno, con tutti i valori)
Quindi escludo che tornando sulla home le variabili di POST siano salvate e quindi esegua in automatico il login, perche' stamoa nessuna info. Semplicemente la sessione non viene distrutta... non riesco a venirne a capo.
Questo il codice PHP all'inizio della home, se puo' servire
Codice PHP:
<?php
session_start();
require 'config.php';
require 'connect.php';
$mail = mysql_real_escape_string($_POST[email]);
$pwd = mysql_real_escape_string($_POST[pwd]);
$error = 'empty';
if(($mail) && ($pwd == "")) {
$error = 'no_pwd';
}
elseif(($pwd) && ($mail == "")) {
$error = 'no_mail';
}
elseif(($mail) && ($pwd)) {
$log_query = "SELECT * FROM `users` WHERE `mail` = " . "'" . $mail . "'";
$log_data = mysql_query($log_query, $link);
$n = mysql_num_rows($log_data);
if($n == 0) {
$error = 'mail_err';
}
else {
$data = mysql_fetch_row($log_data);
$uid = $data[0];
$status = $data[1];
$key = $data[2];
$user = $data[4];
$user_pwd = $data[5];
if($status == 0) {
$error = 'no_act';
}
elseif($status == 1) {
$pwd = md5($pwd);
if(($user_pwd == $pwd)) {
$error = 'none';
$_SESSION['key'] = $key;
$_SESSION['mail'] = $mail;
$_SESSION['pwd'] = $pwd;
$_SESSION['user'] = $user;
}
else {
$error = 'pwd_err';
}
}
}
}
require 'header.php';
?>

Rispondi quotando