PHP: Validazione dati
Validazione dei dati in PHP
La validazione dei dati è un passaggio essenziale per controllare che i valori inseriti dall’utente siano corretti, sicuri e coerenti con le regole dell’applicazione.
Introduzione alla validazione
Quando un utente inserisce dati in un form, questi devono essere controllati prima dell’utilizzo. La validazione serve a prevenire errori, mantenere i dati coerenti e proteggere da tentativi di attacco (es. SQL injection, XSS).
- Controllo del tipo di dato (numerico, stringa, email...)
- Controllo della lunghezza e del formato
- Sanificazione del contenuto (rimozione di caratteri pericolosi)
Esempio: validazione email
PHP fornisce la funzione filter_var() che permette di validare diversi tipi di input. Nell’esempio controlliamo se un’email è valida.
Codice Esempio: validazione email

<?php
$email = "[email protected]";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email valida: " . $email;
} else {
echo "Email non valida";
}
?>
<!-- Output nel browser:
Email valida: [email protected]
-->
Esempio: numeri interi
Possiamo controllare se un valore è un numero intero con FILTER_VALIDATE_INT.
Codice Esempio: validazione numero intero

<?php
$valore = "25";
if (filter_var($valore, FILTER_VALIDATE_INT)) {
echo "Numero intero valido: " . $valore;
} else {
echo "Non è un numero intero";
}
?>
<!-- Output nel browser:
Numero intero valido: 25
-->
Sanificazione dei dati
Oltre alla validazione, è spesso necessario sanificare i dati rimuovendo elementi pericolosi. Ad esempio, FILTER_SANITIZE_STRING elimina tag HTML indesiderati.
Codice Esempio: sanificazione testo

<?php
$testo = "<h1>Ciao</h1> <script>alert('XSS');</script>";
$pulito = filter_var($testo, FILTER_SANITIZE_STRING);
echo $pulito;
?>
<!-- Output nel browser:
Ciao alert('XSS');
-->
Filtri di validazione (FILTER_VALIDATE_...)
Filtro | Descrizione |
---|---|
FILTER_VALIDATE_BOOLEAN | Valida un booleano (true/false, 1/0, yes/no, ecc.) |
FILTER_VALIDATE_EMAIL | Verifica se è un indirizzo email valido |
FILTER_VALIDATE_FLOAT | Verifica se è un numero float |
FILTER_VALIDATE_INT | Verifica se è un numero intero |
FILTER_VALIDATE_IP | Verifica se è un indirizzo IP valido (IPv4 o IPv6) |
FILTER_VALIDATE_MAC | Verifica se è un indirizzo MAC valido |
FILTER_VALIDATE_REGEXP | Valida secondo una espressione regolare |
FILTER_VALIDATE_URL | Verifica se è un URL valido |
Filtri di sanitizzazione (FILTER_SANITIZE_...)
Filtro | Descrizione |
---|---|
FILTER_SANITIZE_EMAIL | Rimuove caratteri non validi da un'email |
FILTER_SANITIZE_ENCODED | Codifica i caratteri speciali in percent-encoding |
FILTER_SANITIZE_FULL_SPECIAL_CHARS | Converte tutti i caratteri speciali in entità HTML |
FILTER_SANITIZE_NUMBER_FLOAT | Rimuove tutto tranne numeri, punto e segni + / - |
FILTER_SANITIZE_NUMBER_INT | Rimuove tutto tranne cifre e segni + / - |
FILTER_SANITIZE_SPECIAL_CHARS | Converte alcuni caratteri speciali in entità HTML |
⚠️ FILTER_SANITIZE_STRING | Rimuove tag HTML e caratteri speciali (deprecato in PHP 8.1) |
FILTER_SANITIZE_URL | Rimuove caratteri non validi da un URL |
Considerazioni
Validare e sanificare i dati è indispensabile per garantire la sicurezza delle applicazioni PHP e la qualità delle informazioni memorizzate o elaborate.