Prova a sostituire la pagina con questa (fai un backup della pagina prima):
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 email = $mail";//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['uid'];
$status = $data['status'];
$key = $data['key'];
$user = $data['user'];
$user_pwd = $data['user_pwd'];
if($status != 1) {//questo per prevenire errori del database, per esempio pari a 2(non capita ma quando capita...)
$error = 'no_act';
}else{
$pwd = md5($pwd);//cambia in sha1 che è più sicuro
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';
?>
Se mi sono scappati errori di sintassi o ';', ecc tieni conto dell'ora in cui ti ho risposto
.
Ho cambiato qualche cosetta ma dovrebbe andare, se fà la stessa cosa posta anche le altre pagine che hai, magari il problema è lì.(non vedo la pagina del logout, se non funziona metti anche header)