Adesso mi funziona perfettamente. Copiando il tuo codice mi sono accorto che per il logout rimandi alla pagina 'logout.php'; la soluzione sarebbe questa(contenuto di logout.php):
Codice PHP:
<?php
include 'connect.php';// o require come vuoi tu
header("Refresh: 4; URL=../jackerbill/prova.php");//questo url fà riferimento alla cartella che ho usato
session_unset();
session_destroy();
session_write_close();
setcookie(session_name(),'',0,'/');
?>
nel caso in cui non dovesse funzionare usa anche questo al posto della pagina che usi:
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 utenti WHERE email = "provajack@hotmail.it'";//fai $_post con email ma poi cerchi mail nel database?
$log_data = mysql_query($log_query);//$link da dove lo prendevi scusa?(non c'e nella pagina, inoltre non devi specificare di nuovo la connessione al database se quella che ti serve è stata l'ultima che hai aperto)
$n = mysql_num_rows($log_data);
if($n == 0) {
$error = 'mail_err';
}
else {
$data = mysql_fetch_array($log_data);/*prendo i dati di tutti gli utenti con la email uguale a quella inserita
il nome contenuto tra [] dipende dal nome campo contenuto nel database*/
$uid = $data['id'];
//$status = $data['status'];
$key = $data['key'];
$user = $data['username'];
$user_pwd = $data['password'];
if($n != 1) {//questo per prevenire errori del database, per esempio pari a 2(non capita ma quando capita...)
$error = 'no_act';
}else{
$pwd = sha1($pwd);//ho i dati in sha1, non md5, per questo ho cambiato, ricambia se vuoi
if(($user_pwd == $pwd)) {
$error = 'none';
$_SESSION['key'] = $key;
$_SESSION['mail'] = $mail;
$_SESSION['pwd'] = $pwd;
$_SESSION['username'] = $user;
}
else {
$error = 'pwd_err';
}
}
}
}
require 'header.php';
Occhio che ho cambiato dei valori per farli coincidere con nomi e le tabelle che ho nel database, inoltre il campo status l'avevo levato perchè non ho una campo del genere, quindi avevo usato di nuovo $n(inutile usare la stessa variabile 2 volte, ma dovevo solo provare) per la conta...
A me funziona perfettamente, non rimane nessuna sessione attiva e se premi indietro nel browser non rivedi i dati come succedeva a te.
Fammi sapere!