Input validation with filter functions
Introduction
Although PHP has a lot of filter functions available, I found that still to many people are using (often incorrect) regular expressions to validate user input. The filter extension is simple, standard available and will fulfill the common validations. Below some pratical examples and things to consider when working with PHP filter functions.
Which are available?
Below a shameless copy paste of the PHP documentation.
- filter_has_var — Checks if variable of specified type exists
- filter_id — Returns the filter ID belonging to a named filter
- filter_input_array — Gets external variables and optionally filters them
- filter_input — Gets a specific external variable by name and optionally filters it
- filter_list — Returns a list of all supported filters
- filter_var_array — Gets multiple variables and optionally filters them
- filter_var — Filters a variable with a specified filter
Pratical use
Sanitizing
“Filter input escape output” every developer knows this but it is a repetitive job but with the filter extension filterering input became a lot easier. When you correctly filter input you drastically lower the change of application vulnerabilities.
Sanitizing a single variable
$sText = ' ';
$sText = filter_var($sText, FILTER_SANITIZE_STRING);
echo $sText; // This is a comment from a alert("scriptkiddie");
Sanitizing multiple variables, same principle as above but with an array, the filter will sanitize all values inside the array
filter_var_array($_POST, FILTER_SANITIZE_STRING);
Validating an email address
if(filter_var($sEmail, FILTER_VALIDATE_EMAIL) === false) {
$this->addError('Invalid email address', $sEmail);
}
Validation a complete array
Validating all your data at once with a single filter will make your code clear, all in one place and is more easy to maintain an example below.
$aData = array(
'student' => 'Sjoerd Maessen',
'class' => '21',
'grades' => array(
'math' => 9,
'geography' => 66,
'gymnastics' => 7.5
)
);
$aValidation = array(
'student' => FILTER_SANITIZE_STRING,
'class' => FILTER_VALIDATE_INT,
'grades' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
'options'=> array('min_range'=>0, 'max_range'=>10))
);
echo '';
var_dump(filter_var_array($aData, $aValidation));
/*array(3) {
["student"]=>
string(14) "Sjoerd Maessen"
["class"]=>
int(21) // Thats strange, my string is converted
["grades"]=>
array(3) {
["math"]=>
int(9)
["geography"]=>
bool(false) // 66 is > 10
["gymnastics"]=>
bool(false) // 7.5 is not an int
}
}*/
Note: okay I did not expect that the string '21' would validate true against FILTER_VALIDATE_INT, after some more testing I also noticed that min_range and max_range only work with FILTER_VALIDATE_INT, when using floats or scalars the options are just ignored, so be aware!
The sanitizing examples above can be made easily more restrictive by adding flags like FILTER_FLAG_STRIP_LOW to the sanitize filter, FILTER_FLAG_STRIP_LOW will for example strip all characters that have a numerical value below 32.
Things to consider
Although the filter functions are some time available some of them aren't flawless, at some points the documentation is missing or very unclear. Another example is the filter_var validation for IPv6 addresses. (see bug report #50117). So it is always a good thing to check if the filter is really doing what you expect it does. Write testcases before using. If you use it correctly you can write your validations in the blink of an eye, and this extension will be your new best friend.
Links
Filter functions
Filter flags
bonus di benvenuto per Starburst: casino online sicuri con Starburst – giocare da mobile a Starburst
Miltondep
31 Aug 25 at 3:53 am
bonaslot kasino online terpercaya: 1wbona – bonaslot link resmi mudah diakses
Ramonatowl
31 Aug 25 at 6:58 am
bonaslot login: bonaslot kasino online terpercaya – 1wbona
Miltondep
31 Aug 25 at 7:00 am
jackpot e vincite su Starburst Italia: Starburst slot online Italia – Starburst slot online Italia
LouisJoync
31 Aug 25 at 9:07 am
Book of Ra Deluxe soldi veri [url=http://1wbook.com/#]Book of Ra Deluxe slot online Italia[/url] bonus di benvenuto per Book of Ra Italia
Aaronreima
31 Aug 25 at 11:55 am
giocare da mobile a Starburst: bonus di benvenuto per Starburst – giocare da mobile a Starburst
Miltondep
31 Aug 25 at 12:43 pm
Что произошло в истории 30 августа Исторические факты и новости дня Новости из прошлого – это не только информация, но и возможность лучше понять настоящее и заглянуть в будущее.
Williammus
31 Aug 25 at 1:53 pm
TD32-21G/2SWHCJ Насос вертикальный Ин-лайн 1,5 кВт, 12 бар, 3×380 В, раб. колесо чугун, 110*С
CharlesSug
31 Aug 25 at 2:19 pm
https://www.trub-prom.com/catalog/truby_srednego_diametra/114/
EdwinSwemn
31 Aug 25 at 4:47 pm
http://1win69.com/# slot gacor hari ini preman69
Alfredrew
31 Aug 25 at 4:58 pm
bonaslot jackpot harian jutaan rupiah: bonaslot – 1wbona
Ramonatowl
31 Aug 25 at 5:09 pm
bonaslot kasino online terpercaya: 1wbona – bonaslot kasino online terpercaya
LouisJoync
31 Aug 25 at 8:09 pm
Book of Ra Deluxe soldi veri [url=https://1wbook.com/#]bonus di benvenuto per Book of Ra Italia[/url] recensioni Book of Ra Deluxe slot
Aaronreima
31 Aug 25 at 10:49 pm
bonaslot link resmi mudah diakses: bonaslot login – bonaslot jackpot harian jutaan rupiah
Miltondep
31 Aug 25 at 10:59 pm
Эскорт работа Тюмень Работа моделью в Тюмени: Открой для себя мир глянца и роскоши. Фотосессии, показы, выгодные контракты. Высокий доход и возможность заявить о себе.
Wernertop
1 Sep 25 at 2:23 am
starburst: Starburst slot online Italia – casino online sicuri con Starburst
Ramonatowl
1 Sep 25 at 4:02 am
https://digital-downloads-app.com/
Michaelphacy
1 Sep 25 at 6:30 am
preman69 login: preman69 – promosi dan bonus harian preman69
LouisJoync
1 Sep 25 at 7:06 am
recensioni Book of Ra Deluxe slot: giri gratis Book of Ra Deluxe – recensioni Book of Ra Deluxe slot
Miltondep
1 Sep 25 at 8:46 am
agen garuda888 bonus new member [url=http://1win888indonesia.com/#]link alternatif garuda888 terbaru[/url] situs judi online resmi Indonesia
Aaronreima
1 Sep 25 at 9:03 am
http://vitalcorepharm.com/# VitalCore
Danieldix
1 Sep 25 at 11:34 am
VitalCore: ed pills – VitalCore Pharmacy
Frankelova
1 Sep 25 at 12:57 pm
https://clearmedspharm.com/# cheap antibiotics
Stevencop
1 Sep 25 at 3:46 pm
J’aime enormement le casino TonyBet, on dirait une experience de jeu incroyable. Il y a une tonne de jeux differents, offrant des options de casino en direct. Les agents sont reactifs, offrant un excellent suivi. On recupere ses gains vite, par contre les offres pourraient etre plus genereuses. En resume, TonyBet c’est du solide pour les fans de jeux en ligne ! Ajoutons que, l’interface est fluide, ce qui rend l’experience encore meilleure.
tonybet casino free spins|
Abobus4zef
1 Sep 25 at 4:29 pm
cheapest pharmacy for prescriptions without insurance: online pharmacy for sale – TrueMeds
MichaelNub
1 Sep 25 at 5:01 pm
VitalCore Pharmacy [url=https://vitalcorepharm.com/#]VitalCore[/url] VitalCore
AntonioTaids
1 Sep 25 at 6:04 pm
VitalCore: ed online prescription – VitalCore Pharmacy
Frankelova
1 Sep 25 at 9:39 pm
купить цветы в москве 14 февраля – день всех влюбленных, когда принято дарить красные розы, символ любви и страсти. Комнатные растения в Москве: Как выбрать и ухаживать
Bryanhurdy
1 Sep 25 at 9:59 pm
J’apprecie enormement Azur Casino, il offre une sensation de casino unique. Les options de jeu sont impressionnantes, incluant des slots dynamiques. Le service d’assistance est de premier ordre, disponible 24/7. Les transactions sont parfaitement protegees, bien que les bonus pourraient etre plus nombreux. En fin de compte, Azur Casino est une pepite pour les joueurs passionnes ! De plus le site est concu avec soin, ajoutant une touche de raffinement.
azur casino promotion|
Mirinchik6zef
1 Sep 25 at 10:31 pm
J’apprecie enormement Banzai Casino, ca ressemble a une experience de jeu explosive. Les options de jeu sont epoustouflantes, avec des machines a sous ultra-modernes. Le personnel est d’un professionnalisme hors pair, joignable 24/7. Les transactions sont parfaitement protegees, neanmoins davantage de recompenses seraient un plus. Dans l’ensemble, Banzai Casino est une plateforme incontournable pour les fans de divertissement numerique ! Notons aussi que le site est concu avec dynamisme, ce qui intensifie le plaisir de jouer.
banzai slots informations|
Quauco4zef
1 Sep 25 at 10:49 pm
Je trouve absolument fantastique Betclic Casino, ca offre une aventure pleine de frissons. La selection de jeux est phenomenale, offrant des sessions de casino en direct immersives. Les agents sont toujours disponibles et professionnels, joignable 24/7. Les transactions sont parfaitement protegees, cependant davantage de recompenses seraient appreciees. En fin de compte, Betclic Casino offre une experience de jeu remarquable pour ceux qui aiment parier ! Ajoutons que le site est concu avec elegance, facilite chaque session de jeu.
contact betclic|
Dieona8zef
1 Sep 25 at 11:13 pm
https://truemedspharm.shop/# TrueMeds
Danieldix
1 Sep 25 at 11:48 pm
http://clearmedspharm.com/# buy antibiotics
Stevencop
2 Sep 25 at 12:19 am
cialis canada online pharmacy: TrueMeds Pharmacy – pharmacy canadian
MichaelNub
2 Sep 25 at 12:38 am
VitalCore Pharmacy [url=https://vitalcorepharm.com/#]low cost ed meds[/url] VitalCore Pharmacy
AntonioTaids
2 Sep 25 at 2:08 am
Je trouve genial le casino TonyBet, ca offre une experience de jeu incroyable. La selection de machines est vaste, avec des machines a sous modernes. Le service client est super, avec des reponses claires. Le processus de retrait est efficace, cependant plus de tours gratuits seraient bien. Pour tout dire, TonyBet est une plateforme fiable pour ceux qui aiment parier ! Ajoutons que, le design est attractif, facilitant chaque session de jeu.
tonybet affiliates programme|
Abobus4zef
2 Sep 25 at 4:03 am
TrueMeds Pharmacy: best online pharmacy for viagra – canadian pharmacy viagra
Frankelova
2 Sep 25 at 5:21 am
TrueMeds Pharmacy: TrueMeds – TrueMeds Pharmacy
MichaelNub
2 Sep 25 at 8:20 am
Je trouve absolument fantastique Banzai Casino, on dirait une experience de jeu explosive. Il y a une multitude de titres varies, proposant des jeux de table authentiques. Le service d’assistance est exemplaire, garantissant une aide immediate. Les paiements sont fluides et securises, bien que les promotions pourraient etre plus frequentes. Dans l’ensemble, Banzai Casino offre une experience exceptionnelle pour ceux qui aiment parier ! Par ailleurs le design est visuellement percutant, facilitant chaque session de jeu.
bonus banzai casino|
Quauco4zef
2 Sep 25 at 8:36 am
J’apprecie enormement Betclic Casino, ca ressemble a une energie de jeu irresistible. Le catalogue de jeux est incroyablement riche, offrant des sessions de casino en direct immersives. Le service client est exceptionnel, repondant instantanement. Les transactions sont parfaitement protegees, cependant j’aimerais plus d’offres promotionnelles. En resume, Betclic Casino est une plateforme d’exception pour ceux qui aiment parier ! En bonus la navigation est simple et agreable, facilite chaque session de jeu.
betclic recrutement|
Dieona8zef
2 Sep 25 at 8:39 am
buy erectile dysfunction medication [url=https://vitalcorepharm.shop/#]ed pills[/url] ed pills
AntonioTaids
2 Sep 25 at 10:51 am