volevo avere alcuni consigli, pareri, critiche sul sistema di login che sto utilizzando.. principalmente nell'aspetta sicurezza..

utilizzo una funzioncina per il login

Codice PHP:
function login($nickname$password) {

##SE I CAMPI OBBLIGATORI NON SIANO STATI COMPILATI##
if (empty($nickname) OR empty($password)) {

echo 
"Campi non compilati";

##SE TUTTI I CAMPI OBBLIGATORI SONO STATI COMPILATI CONTINUO CON I CONTROLLI##
} else {

##CONTROLLO CARATTERI##
$nickname_controllato mysql_escape_string($nickname);
$password_controllata mysql_escape_string(md5($password));

##GENERO SESSION KEY##

$session_key codice_random(5);

##VERIFICO CHE L'UTENTE ESISTA##
$sql "SELECT * FROM tw_utenti WHERE nickname = '$nickname_controllato' AND password = '$password_controllata'";
$query = @mysql_query($sql);
$row mysql_fetch_array($query);
$row_n mysql_num_rows($query);

##se l'utente non esiste##
if ($row_n == 0) {

echo 
"Utente non riconosciuto";

echo 
"<meta http-equiv=\"Refresh\" content=\"1; url=index.php\">";

##se l'utente esiste##
} else {

##controllo che l'utente dopo la registrazione abbia attivato il profilo##
if (empty($row[codice_attivazione])) {

echo 
"Utente riconosciuto";

$_SESSION['nickname_controllato'] = $nickname_controllato;
$_SESSION['password_controllata'] = $password_controllata;
$_SESSION['session_key'] = $session_key;

##Aggiorno il profilo nel database con la nuova session key##
mysql_query("UPDATE tw_utenti SET login_n = login_n+1, session_key = '$session_key' WHERE id_utente = '".$row['id_utente']."'") or die("Errore alla linea ".__LINE__.": ".mysql_error()) ;


echo 
"<meta http-equiv=\"Refresh\" content=\"1; url=index.php\">";

} else {

echo 
"Utente non attivo";

echo 
"<meta http-equiv=\"Refresh\" content=\"1; url=index.php\">";

}

}

}


quando invece devo riconoscere l'utente eseguo questo codice

Codice PHP:
####RICONOSCIMENTO UTENTE####

$nickname_controllato $_SESSION['nickname_controllato'];
$password_controllata $_SESSION['password_controllata'];
$session_key $_SESSION['session_key'];

####CONTROLLO UTENTI####

$sql_utente "SELECT * FROM tw_utenti WHERE nickname = '" $nickname_controllato "' AND password = '" $password_controllata "' AND session_key = '" $session_key "'";
$query_utente mysql_query($sql_utente);
$row_utente mysql_fetch_array($query_utente);
$row_utente_n mysql_num_rows($query_utente);



if (
$row_utente_n == 0) {

echo 
"utente non connesso";

} else {

echo 
"utente connesso";