Qualcuno può elencarmi i metodi più sicuri per gesrite il log-in degli utenti?
Conosco già le cookie e qualcosa sulle sessioni.
Grazie
Printable View
Qualcuno può elencarmi i metodi più sicuri per gesrite il log-in degli utenti?
Conosco già le cookie e qualcosa sulle sessioni.
Grazie
Ci sono diversi script su http://php.html.it/ prova a cercare lì qualcosa tipo "login" o "dev login" :wink:
foreach
Principalmente i metodi sono questi, ce ne sarebbero altri ma decisamente meno "sicuri" (nel senso di meno affidabili), come registrare i login su file o su database (in questo caso, è molto più difficile gestire interruzioni "brutali" della sessione utente).
Stammi bene...
Potreste aiutarmi a finire la mia pagina di acccesso con il metodo che ritenete più sicuro?
Codice PHP:if((!$username2) || (!$password2)){
$reqmsg= "<font class=\"error1\">*Richiesto</font>";
if(trim(empty($username))){
$user_err= $reqmsg;
}
if(empty($password)){
$pass_err= $reqmsg;
}
} else {
/*** Ricerca Nome ***/
$query = "SELECT username FROM ".$prefix."_users WHERE username = '$username2'";
$result = mysql_query ($query);
if (mysql_num_rows($result) == 0) {
$user_err= "<font class=\"error1\">*Username Errato</font>";
} else {
/*** Completamento ***/
$query = "SELECT password, active FROM ".$prefix."_users WHERE username = '$username2'";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
$password = $row['password'];
$active = $row['active'];
if ($active == 0)
{
$general_err= "<font class=\"error1\">*Questo profilo non risulta attivato</font>";
}
if ($md5_password != $password)
{
$pass_err= "<font class=\"error1\">*Password Errata</font>";
}
else {
$query = "UPDATE ".$prefix."_users SET lastlogin=NOW() WHERE username = '$username2'";
}
Grazie per la disponibilità
A parer mio quello delle sessioni è il migliore. Usarlo in accoppiata con i cookie può dare alcuni vantaggi nei controlli. Ricorda che i cookie sono modificabili dall'utente poichè risiedono sul suo terminale, quindi NON utilizzare solo il metodo dei cookie. ;)
Scusa ma invece di fare due query, non ti conviene comparare automaticamente username e password? Così sai che se matchano hai un risultato (mysql_num_rows == 1) altrimenti se è 0 i dati sono errati. Io farei così:
Sia chiaro è un punto di inizio. É un abbozzo con l'uso delle sessioni... provalo, vedi se funziona ed adattalo al tuo script. Ho levato parecchia roba dal tuo perchè a mio giudizio sembravano fronzoli inutili, nel caso reintegra le parti tagliate. Potresti stampare il form direttamente nella pagina login, mettergli come action la variabile $_SERVER['PHP_SELF'] e controllare se gli vengono passati i dati (mediante POST, sarebbe preferibile): in caso negativo, stampa il form e basta, altrimenti esegue le query del caso e verifica se l'utente esiste e può autenticarsi (nel caso, lo fa autenticare ovviamente). In alternativa, la variabile $err viene stampata sotto al form...Codice PHP:session start();
if((!$username2) || (!$password2)){
$reqmsg= "<font class=\"error1\">*Richiesto</font>";
if (trim(empty($username)))
$user_err= $reqmsg;
if(empty($password))
$pass_err= $reqmsg;
} else {
/*** Ricerca Nome ***/
$query = "SELECT username FROM ".$prefix."_users
WHERE( (username = ' . $username2 . ') AND (password = ' . md5($password2) . ') );";
$result = mysql_query($query);
if (mysql_num_rows($result) == 1) {
// Crea la sessione
$_SESSION["username"] = $username2;
$_SESSION["password"] = md5($password2);
// Aggiorna il campo lastlogin dell'utente
$query = "UPDATE ".$prefix."_users SET lastlogin = NOW()
WHERE username = ' . $username2 . ');";
mysql_query($query)
or die("Impossibile aggiornare il campo lastlogin");
} else
$err = "Nome utente o password errati";
Insomma vedi tu. Utilizzare script già fatti secondo me ti conviene solo se non hai reali conoscenze di programmazione.