La validazione dei dati e’ parte integrante del lavoro di sviluppo con i form; non solo per gli svariati problemi di sicurezza ma anche perche’ potrebbe compromottere il funzionamento. Il tutorial sara’ incentrato sull’uso della funzione filter_var per rimuovere i caratteri illegali e validare i dati.
Un classico esempio e’ un form in cui un campo e’ l’indicazione dell’Home Page dove in molti potrebbero inserire: “Non presente” che non e’ sicuramente un indirizzo Web valido quindi ha senso utilizzarlo poi come link.
Utilizzare le espressioni regolari e/o filtrare i dati manualmente richiede molto tempo ed e’ sempre a rischio di errori ma dalla versione 5.2 di PHP la funzione filter_var puo’ darci un valido aiuto.
La funzione rimuove i caratteri illegali e valida i dati nel campo in maniera corretta questo per evitare anche errori nel copia ed incolla dei dati.
La funzione prende come parametri la variabile da controllare ed il tipo di controllo da utilizzare.
Se ad esempio volessimo rimuovere i tag HTML da una stringa ecco un esempio:
$testo = “<b>Testo in Bold</b>”;
$testoPulito = filter_var($string,FILTER_SANITIZE_STRING);
echo($testoPulito); // Testo in Bold
Se volessimo validare un IP questo un esempio:
$ip = “192.168.0.1”;
$ipValido = filter_var($ip, FILTER_VALIDATE_IP);
// $ipValido e’ TRUE
$ip = “192.168.0.1.1.1”;
$ipValido = filter_var($ip, FILTER_VALIDATE_IP);
// $ipValido e’ FALSE
Nel caso in cui volessimo validare EMAIL ed Home Page provenienti da un FORM possiamo utilizzare il seguente esempio:
<?php
if (isset($_POST[‘email’])) {
echo filter_var($_POST[‘email’], FILTER_SANITIZE_EMAIL);
echo “<br/><br/>”;
}
if (isset($_POST[‘url’])) {
echo filter_var($_POST[‘url’], FILTER_SANITIZE_URL);
echo “<br/><br/>”;
}
?>
<form name=”modulo” method=”post”>
Email: <br/>
<input type=”text” name=”email” value=”<?php echo $_POST[‘email’]; ?>” size=”50″/> <br/><br/>
Home Page: <br/>
<input type=”text” name=”url” value=”<?php echo $_POST[‘url’]; ?>” size=”50″ /> <br/>
<br/>
<input type=”submit” />
</form>
Se ad esempio inserissi i seguenti valori:
Email: info)(@freescriptphp\\\\.\\\com
Homa Page: http://www.free&&scriptphp.com
Otterrei come valori:
Email: info@freescriptphp.com
Homa Page: http://www.freescriptphp.com
In tal caso il dato viene ripulito ma non validato quindi se noi avessimo inserito i seguenti campi:
Email: info)(@freescriptphp\\\\
Homa Page: http://www.free&&scriptphp
Avremo ottenuto la stringa ripulita ma non validarla. Per validare la stringa ecco nel seguito l’esempio in PHP da utilizzare:
<?php
if (isset($_POST[‘email’])) {
$email = filter_var($_POST[‘email’], FILTER_SANITIZE_EMAIL);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo “$email e’ un indirizzo mail valido<br/><br/>”;
} else {
echo “$email e’ un indirizzo mail <strong>non valido</strong><br/><br/>”;
}
}
if (isset($_POST[‘url’])) {
$url = filter_var($_POST[‘url’], FILTER_SANITIZE_URL);
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo “$url e’ un URL valido.<br/><br/>”;
} else {
echo “$url e’ un URL <strong>non valido</strong><br/><br/>”;
}
}
?>
<form name=”modulo” method=”post”>
Email: <br/>
<input type=”text” name=”email” value=”<?php echo $_POST[‘email’]; ?>” size=”50″/> <br/><br/>
Home Page: <br/>
<input type=”text” name=”url” value=”<?php echo $_POST[‘url’]; ?>” size=”50″ /> <br/>
<br/>
<input type=”submit” />
</form>
In tal caso i dati vengono ripuliti e validati quindi inserendo:
Email: info)(@freescriptphp\\\\<br />
Homa Page: http://www.free&&scriptphp
Otterremo che l’email e l’indirizzo Web non sono validi anche se ripuliti.
Nella prossima parte vedremo come realizzare un form completo con validazione dei dati ed invio di mail.
grazie mille per i suggerimenti
Ciao Antonio…si fa il possibile; se hai degli script interessanti da postare ben vengano!