PHP filtri se uporabljajo za preverjanje in filtriranje podatkov, ki prihajajo iz nevarnih virov, kot je uporabniški vnos. Za uporabo teh filtrov ni potrebno dodatno nameščanje, ker so že privzeto omogočeni.
Na obnašanje teh filtrov vplivajo nastavitve v php.ini datoteki:
Ime | Opis | Privzeto | Spremenljivko |
---|---|---|---|
filter.default | S tem filtrom filtriramo vse podatke $_GET, $_POST, $_COOKIE, $REQUEST in $_SERVER. Sprejme ime filtra, ki ga želimo privzeto uporabiti. Oglejmo si seznam filtrov za seznam imen filtrov. | "unsafe_raw" | PHP_INI_PERDIR |
filter.default_flags | Privzete zastavice (flags), ki se uporabijo, ko je nastavljen privzeti filter. Privzeto je nastavljeno na FILTER_FLAG_NO_ENCODE_QUOTES zaradi združljivosti za nazaj. | NULL | PHP_INI_PERDIR |
filter_has_var() | Preveri, ali obstaja spremenljivka določene vrste vnosa. | Glej primer |
filter_id() | Vrne ID filtra podanega imena filtra. | Glej primer |
filter_input() | Pridobi zunanjo spremenljivko (npr. iz obrazca vnosa) in jo po želji filtrira. | Glej primer |
filter_input_array() | Pridobi zunanje spremenljivke (iz vnosa obrazca) in jih po želji filtrira. | Glej primer |
filter_list() | Vrne seznam vseh podprtih imen filtrov. | Glej primer |
filter_var() | Filtrira spremenljivko z določenim filtrom. | Glej primer |
filter_var_array() | Pridobi več spremenljivk in jih filtrira. | Glej primer |
Pri uporabi naprednih filtrov lahko uporabimo različne možnosti, da prilagodimo filtre za validiranje in sanacije vhodnih podatkov. Tukaj si bomo ogledali nekaj naprednejših načinov uporabe filtrov.
Parameter $moznosti nam omogoča, da določimo dodatne možnosti za filtriranje. Poglejmo primer validacije in filtriranja IP naslova z določitvijo možnosti.
<?php $ip = "127.0.0.1"; // Uporaba FILTER_VALIDATE_IP z naprednimi možnostmi $moznosti = [ 'flags' => FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ]; $filtriran_ip = filter_var($ip, FILTER_VALIDATE_IP, $moznosti); if ($filtriran_ip !== false) { echo "IP naslov je veljaven: " . $filtriran_ip; } else { echo "IP naslov ni veljaven."; }
IP naslov ni veljaven.
Z filter_var_array() lahko filtriramo več vhodnih podatkov hkrati in za vsako spremenljivko določimo specifična pravila in možnosti.
<?php // Vhodno polje, ki simulira npr. $_POST podatke $data = [ 'username' => 'grdiRaček', 'age' => '51', 'email' => 'primer@demo.si' ]; // Definicija filtrov za posamezne spremenljivke $filters = [ 'username' => [ 'filter' => FILTER_CALLBACK, 'options' => function ($value) { return preg_match('/^[a-zA-Z0-9]{3,20}$/', $value) ? $value : false; } ], 'age' => [ 'filter' => FILTER_VALIDATE_INT, 'options' => [ 'min_range' => 1, 'max_range' => 120 ] ], 'email' => FILTER_VALIDATE_EMAIL ]; // Uporaba filter_var_array za filtriranje vhodnih podatkov $filtered_data = filter_var_array($data, $filters); if ($filtered_data) { if ($filtered_data['username'] === false) { echo "Uporabniško ime ni veljavno.<br>"; } else { echo "Uporabniško ime je veljavno: " . htmlspecialchars($filtered_data['username']) . "<br>"; } if ($filtered_data['age'] === false) { echo "Starost ni veljavna ali ni v pravilnem obsegu.<br>"; } else { echo "Starost je veljavna: " . htmlspecialchars($filtered_data['age']) . "<br>"; } if ($filtered_data['email'] === false) { echo "Email naslov ni veljaven.<br>"; } else { echo "Email naslov je veljaven: " . htmlspecialchars($filtered_data['email']) . "<br>"; } } else { echo "Napaka pri filtriranju vhodnih podatkov."; }
Uporabniško ime je veljavno: grdiRacek Starost je veljavna: 51 Email naslov je veljaven: primer@demo.si
Kako deluje:
Napredne možnosti filtrov
S temi metodami lahko zelo natančno kontroliramo validacijo in sanacijo vhodnih podatkov, kar izboljša varnost naše aplikacije.