PHP Filter Reference
§ 1. PHP Filters
Lo scopo dei filtri é quello di:
- Validare i dati: determinare se i dati sono nella forma appropriata;
- Sanare i dati: rimuovere dai dati ogni carattere illegale.;
La funzione filter_list() può essere usata per elencare la lista delle funzioni di filtro disponibili.
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>
Filter Name | Filter ID |
int | 257 |
boolean | 258 |
float | 259 |
validate_regexp | 272 |
validate_domain | 277 |
validate_url | 273 |
validate_email | 274 |
validate_ip | 275 |
validate_mac | 276 |
string | 513 |
stripped | 513 |
encoded | 514 |
special_chars | 515 |
full_special_chars | 522 |
unsafe_raw | 516 |
517 | |
url | 518 |
number_int | 519 |
number_float | 520 |
magic_quotes | 521 |
add_slashes | 523 |
callback | 1024 |
§ 1.2 Perchè usare i filtri.
Molte applicazioni web ricevono input esterni. Input esterni possono essere:
- Input utente da una form;
- Cookies;
- Web services data;
- Variabili server
- Risultati di una query
Nota:I dati esterni dovrebbero essere sempre validati!
I dati non validi possono portare a problemi di sicurezza ed interrompere la pagina. Usando i filtri PHP ci si assicura che i dati in input alla applicazione sono corretti.
§ 1.3 La funzione filter_var().
La funzione filter_var() esegue sia la validazione che la bonifica.
La funzione filter_var() richiede due parametri:
- la variabile da controllare;
- il tipo di controllo da usare;
Il seguente esempio usa la funzione filter_var per rimuovere tutte le tag HTML da una stringa:
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
§ 1.4 Validare un intero.
Il seguente esempio usa la funzione filter_var per controllare se la varibile $int contiene un intero:
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
§ 1.5 filter_var() e il problema dello 0.
L'esempio precedente, se $int fosse stato settato a 0, avrebbe restituito: "Integer is non valid" per risolvere questo problema si fa così
<?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");
}
?>
§ 1.6 validare un indirizzo IP
Nell'esempio che segue la funzione filter_var() è utilizzata per controllare che la variabile $ip sia un indirizzo IP valido:
<?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");
}
?>
§ 1.7 Validare e bonificare un indirizzo email
Nell'esempio che segue la funzione filter_var(), prima rimuove tutti i caratteri illegali dalla variabile $emil, poi controlla che contenga un indirizzo email valido:
<?php
$email = "john.doe@example.com";
// 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");
}
?>
§ 1.8 Validare e bonificare un URL
Nell'esempio che segue la funzione filter_var(), prima rimuove tutti i caratteri illegali dalla variabile $url, poi controlla che che contenga un URL valido:
<?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");
}
?>