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)