Filtri PHP
Convalida dei dati = Determina se i dati sono nella forma corretta.
Sanificazione dei dati = Rimuovere qualsiasi carattere illegale dai dati.
L'estensione del filtro PHP
I filtri PHP vengono utilizzati per convalidare e disinfettare l'input esterno.
L'estensione del filtro PHP ha molte delle funzioni necessarie per controllare l'input dell'utente ed è progettata per rendere la convalida dei dati più semplice e veloce.
La filter_list()
funzione può essere utilizzata per elencare ciò che offre l'estensione del filtro PHP:
Esempio
<table>
<tr>
<td>Filter Name</td>
<td>Filter ID</td>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
Perché usare i filtri?
Molte applicazioni web ricevono input esterno. Input/dati esterni possono essere:
- Input dell'utente da un modulo
- Biscotti
- Dati dei servizi web
- Variabili del server
- Risultati della query del database
Dovresti sempre convalidare i dati esterni!
Dati inviati non validi possono causare problemi di sicurezza e danneggiare la tua pagina web!
Usando i filtri PHP puoi essere sicuro che la tua applicazione riceve l'input corretto!
PHP filter_var () Funzione
La filter_var()
funzione convalida e disinfetta i dati.
La filter_var()
funzione filtra una singola variabile con un filtro specificato. Occorrono due dati:
- La variabile che vuoi controllare
- Il tipo di controllo da utilizzare
Disinfetta una stringa
L'esempio seguente usa la filter_var()
funzione per rimuovere tutti i tag HTML da una stringa:
Esempio
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Convalida un numero intero
L'esempio seguente usa la filter_var()
funzione per verificare se la variabile $int è un numero intero. Se $int è un numero intero, l'output del codice seguente sarà: "Integer is valid". Se $int non è un numero intero, l'output sarà: "Il numero intero non è valido":
Esempio
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Suggerimento: filter_var() e problema con 0
Nell'esempio sopra, se $int è stato impostato su 0, la funzione sopra restituirà "Intero non valido". Per risolvere questo problema, utilizzare il codice seguente:
Esempio
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Convalida un indirizzo IP
L'esempio seguente usa la filter_var()
funzione per verificare se la variabile $ip è un indirizzo IP valido:
Esempio
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip is a valid IP address");
} else {
echo("$ip is not a valid IP address");
}
?>
Disinfetta e convalida un indirizzo email
L'esempio seguente usa la filter_var()
funzione per rimuovere prima tutti i caratteri illegali dalla variabile $email, quindi controlla se si tratta di un indirizzo email valido:
Esempio
<?php
$email = "[email protected]";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Disinfetta e convalida un URL
L'esempio seguente usa la filter_var()
funzione per rimuovere prima tutti i caratteri illegali da un URL, quindi controlla se $url è un URL valido:
Esempio
<?php
$url = "https://www.w3schools.com";
// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>
Riferimento completo al filtro PHP
Per un riferimento completo di tutte le funzioni di filtro, vai al nostro Riferimento completo sui filtri PHP. Controlla ogni filtro per vedere quali opzioni e flag sono disponibili.
Il riferimento contiene una breve descrizione, ed esempi di utilizzo, per ciascuna funzione!