Redazione
a- a+

Validare modulo login con PHP

Vediamo come fare a validare un form login. Codici ed esempi.

La validazione di form scritti in PHP è un requisito frequente in molte applicazioni web. A seconda delle esigenze e dei casi esistono diversi tipi di convalide di moduli PHP, ma per tutti questi tipi di convalide il processo base rimane lo stesso. Cominciamo con un semplice esempio di convalida e  poi ci addentreremo in un processo di convalida e-mail più complesso usando  le espressioni regolari in linguaggio PHP.

Avremo due pagine. La pagina principale in cui porremo il tag “<form>” e che chiameremo form.php. Questa pagina servirà a inserire i dati da inviare a un’altra pagina che chiameremo invece form_validate.php. La pagina form_validate.php servirà a controllare i dati inseriti in form.php e a convalidarli. Ecco come verrà scritto form.php:

<form method=post action=form_validate.php>
  <input type=text name=userid>
  <input type=text name=password>
  <input type=submit value=Submit> 
</form>

I dati inseriti nei tag <input> che sono l’userid e la password, saranno disponibili alla pagina form_validate.php. La pagina form_validate.php leggerà i dati e verificherà se c’è qualche valore o no. Di seguito il codice PHP di form_validate.php.

<? Php

$Flag = "OK"; // Questa è una variabile che servirà ad indicare se i valori userid e 

              // password sono corretti e il suo valore iniziale è OK
$msg = ""; // Inizializzazione del messaggio che conterrà il messaggio di errore

if (strlen($userid) <5) {// controllo la lunghezza della userid  che  deve essere più di
                         // 5 caratteri di lunghezza

$msg = $msg."(Userid troppo corta. L’userid deve avere più  di 5  caratteri) <BR>".;
$Flag = "NoOK" // impostazione del flag a NoOK in quanto verificato l’errore
}

// La validazione dell’userid è terminata, ora iniziamo il controllo della password.

if (strlen($password) <5) {// controllo la lunghezza della password inserita che deve essere maggiore di 5
                           // caratteri
$msg = $msg."(Si prega di inserire la password con una lunghezza superiore a 5 caratteri) <BR>".;
$Flag = "NoOK" // impostazione del flag ta NoOk in quanto verificato l’errore
}

Attenzione alla variabile $Flag: se il flag è impostato su OK, allora il modulo login è stato convalidato e possiamo procedere al passo successivo cioè controllare che userid e password siano presenti nel database. Se, invece, il flag è impostato su NoOK userid e/o password non sono state validate (più corte di 5 caratteri o vuote), quindi viene visualizzato il messaggio di errore. Dobbiamo far mostrare oltre al messaggio di errore un tasto per il ritorno indietro alla pagina form.php:

if ($Flag <> "OK") {
echo "<center>$msg<br> <input type=‘button’ value=‘<< Torna Indietro’ onClick=‘history.go(-1)’> </ center>";
} Else {// tutte le voci sono corrette si procede a controllare la presenza della userid
        // e della password nel database...
}

Nel caso appena visto si è trattato di verificare e validare due caselle di testo controllando però solo il numero di caratteri immessi dall’utente. Passiamo adesso a un passo più complesso, ovvero validare il login in modo che oltre al fatto che sia corto o vuoto sia controllata anche la presenza di lettere minuscole o maiuscole. Ovvero permettere al campo userid quali caratteri sono ammessi e quali non sono ammessi. Useremo la  stessa variabile $Flag per impostare lo stato e visualizzare un messaggio in caso di mancata validazione.

if (ereg(‘[^A-Za-z]’, $userid)) {// Sono ammesse solo  le lettere minuscole.
$msg = $msg."(Si prega di utilizzare solo lettere dell’alfabeto dalla a alla z come userid) <BR>".;
$Flag = "NoOK" // impostazione del flag NoOK .
}

ereg() è una funzione PHP per il riconoscimento delle espressioni regolari, questa funzione può essere utilizzata  per ottenere potenti mezzi di validazione nella creazione di moduli. La funzione restituisce TRUE se le ricerche previste da espressione_regolare sono riscontrate in stringa. Viene restituito FALSE se non si hanno riscontri, oppure si verificano degli errori.



Ti potrebbe interessare anche

commenta la notizia

Ci sono 1 commenti
deligant
La quantità e diversità dei messaggi di errore potrebbe essere un aiuto a chi attacca il sito!
Inoltre l'approccio "vero finché non dimostro che è false" è una porta aperta all'attivazione di login "a sorpresa"!

Decisamente più proficuo "false finché dimostro che è vero": ecco la procedura riscritta

$msg='username o password non validi'; // finché esiste un $msg non può loggarsi

if(!empty($_POST['userid']) and preg_match('#^[a-z]{5,}$#', $_POST['userid'])) {
// a questo punto $_POST['userid'] esiste e contiene SOLO caratteri minuscoli
// ereg è deprecato dal PHP 5.3, da cui l'uso di preg_match
// la costruzione ^[a-z]{5,}$ significa "la stringa contenuta tra l'inizio e la fine di $_POST['userid']
// deve essere costituita da almeno 5 lettere minuscole

if(!empty($_POST['password']) and preg_match('#^[a-z]{5,}$#', $_POST['password'])) {
// a questo punto $_POST['password'] esiste e contiene SOLO caratteri minuscoli

// ora si può fare il controllo di validità di userid e password.
// Dato che userid è sicuramente formata da lettere minuscole,
// quella è l'unica stringa da usare come chiave
// mentre password va comunque "decontaminata"

// a questo punto si verificano le corrispondenze tra login e password registrate
if(is_login_correct($_POST['userid'], $_POST['password'])) {
$msg='';
}
}
}

// se c'è un messaggio vuol dire che il login è fallito
if($msg) {
die($msg);
}

// login avvenuto