Filtrare dati in un form con PHP
Spesso nella realizzazione di siti dinamici in PHP, ci si trova a creare delle pagine che richiedono l’input dell’utente attraverso un form.
Il problema è che non possiamo sapere a priori se l’utente inserirà dei dati sintatticamente corretti, o se inserirà dati “mal formati” modificando la normale esecuzione della pagina PHP.
Per far fronte a questa problematica ci vengono incontro le espressioni regolari, che permettono di filtrare i dati secondo delle regole ben definite a priori.
In PHP si possono fare controlli su delle variabili con espressioni regolari grazie alle funzioni ereg() ed eregi(), l’unica differenza tra le due è che la prima è case sensitive.
Un’esempio della sintassi è il seguente:
eregi($expRegolare, $varDaControllare);
Dove $varDaControllare indica la variabile in cui verrà controllata l’espressione regolare in $expRegolare.
La funzione eregi restituisce FALSE se l’espressione regolare non è verificata.
Vediamo ora alcuni esempi gia pronti di espressioni regolari che potrebbero capitare frequentemente:
Validazione delle email:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$
Validazione di un dominio
^[a-z0-9\-\.]+\.(it|com|org|net|eu|info)$
Verificare l’estensione di un’immagine
^.+\.(bmp|jpeg|jpg|png|gif)$
Verificare l’estensione di un file qualunque
^.+\.rar$
Inoltre va ricordato che in qualunque form, oltre ai controlli con le espressioni regolari, andrebbe controllato che ogni campo sia definito e tutti gli altri controlli di base per evitare spiacevoli sorprese(Sql Injection e altro…)