Io creo di solito delle funzioni generiche e setto in un array l'elenco delle funzioni da richiamare per ogni campo
Ad esempio
Codice PHP:
$controlli = array(
"campo1" => "numerico",
"campo2" => "numerico",
"campo3" => "testolibero",
"campo4" => "testolibero",
"campo5" => "email"
// eccetera
);
// definisco le funzioni di controllo con lo stesso nome indicato nell'array
function numerico($n) // solo numeri
{
return is_numeric($n);
}
function testolibero($t) // no htmlentities ammesse
{
rerurn $t==htmlentities($t);
}
function email($e)
{
// eccetera
}
// controllo per vedere se qualche campo non va bene
$campierrati = array();
foreach($_POST as $key=>$value)
{
$funzione = $controlli[$key];
if(!$funzione($value))
$campierrati[]=$key;
}
L'array $campierrati conterrà l'elenco dei campi che non rispettano le regole
Devi ovviamente sostituire a "campo1", "campo2" eccetera, i nomi dei campi del tuo form e le funzioni di controllo sono ovviamente semplificate: per i testi avrai dei preg_match o similar... per i numeri avrai dei limiti minimi e massimi e cose così. L'importante è che tutte le funzioni di controllo restituiscano FALSE se il campo non rispetta le regole
In questo modo fai si tutti i controlli, ma definisci la funzione di controllo per ogni tipologia di dato (testo, numero, email ecc) una sola volta e la richiami grazie al nome della funzione definito all'interno dell'array $controlli
Volendo puoi affinare il tutto facendo si che le funzioni di controllo restituiscano qualcosa di più di "true" e "false" ma anche un testo, un codice di errore o quello che vuoi, modificando opportunamente lo script
Non ho inventato nulla, è una soluzione che ho trovato in giro