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";
}