Salve a tutti, vorrei un parere su questo sistema di login realizzato tramite database, qualche consiglio sulla sua affidabilità, ecc. Questo è il codice della pagina di login:
Codice PHP:
$sid = $_COOKIE['sid'];
if (is_null($sid)) {
if (!isset($_POST['login'])) {/* visualizzo il form di login */}
else {
mysql_connect("localhost","root","");
mysql_select_db("babylonia");
$username = (string) mysql_escape_string(strtolower(trim($_POST['username'])));
$password = (string) mysql_escape_string(strtolower(trim($_POST['password'])));
$sql_query = mysql_query("SELECT uid,password,status FROM user WHERE username='".$username."'");
$sql_array = mysql_fetch_assoc($sql_query);
if (mysql_num_rows($sql_query) < 1) {echo "nessun utente con questo username";}
elseif ((int) $sql_array['status'] < 2) {echo "utente non autorizzato";}
else {
if (md5($password) == $sql_array['password']) {
list($usec, $sec) = explode(' ', microtime());
mt_srand((float) $sec + ((float) $usec * 100000));
$sid = md5(uniqid(mt_rand(), true));
if ($_POST['cookie'] == "ok") {$expire = (int) time()+31536000;}
else {$expire = (int) 0;}
if (mysql_query("INSERT INTO session (sid, uid, date) VALUES ('".$sid."', '".$sql_array['uid']."', ".time().")") && setcookie("sid",$sid,$expire)) {echo "utente loggato";}
else {"echo login fallito";}
}
}
}
}
La variabile $_POST['cookie'] mi informa se l'utente ha scelto di mantenere i dati di logn anche dopo la chiusura del browser... In un file incluso in tutto il sito metto questo:
Codice PHP:
$sid = $_COOKIE['sid'];
if (!is_null($sid)) {
mysql_connect("localhost","root","");
mysql_select_db("babylonia");
$sql_query = mysql_query("SELECT U.* FROM session S, user U WHERE S.uid = U.uid and S.sid = '".$sid."'");
if (mysql_num_rows($sql_query) !== 1) {echo "errore";}
else {$_USER = mysql_fetch_assoc($sql_query);}
}
In modo da ritrovarmi in $_USER i dati dell'utente se questo è loggato. Poi, facendo un controllo su $_USER, stabilisco se l'utente è loggato ed ha un livello sufficiente per visualizzare la pagina in questione. Il logout l'ho fatto così:
Codice PHP:
$sid = $_COOKIE['sid'];
if (!is_null($sid)) {
mysql_connect("localhost","root","");
mysql_select_db("babylonia");
if (mysql_query("DELETE FROM session WHERE sid = '".$sid."'") && setcookie("sid","",time()-31536000)) {echo "logout ok ";}
}
Dunque, cosa ne pensate?