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

Comments

2,656 responses to “Input validation with filter functions”

  1. echtgeldcasino sofort spielen Avatar

    Ihr solltet immer schauen, wo das Casino sitzt und wie es lizenziert ist. Viele Top Online Casinos bieten riesige Boni an, oftmals schon direkt auf die ersten Einzahlungen. Dazu gibt es Wettanbieter mit Casino, Live Casino Gameshows und Live-Dealer-Spiele. Doch welches Online Casino ist seriös, sicher und bietet die besten Bonusangebote? Wenn es um die Spitze der Spielerfahrung geht, stehen beste casino Optionen stets im Mittelpunkt, da sie Qualität und Unterhaltung garantieren.
    Microgaming (jetzt Apricot) ist der Marktführer, wenn es um Online Casino Spiele geht und bietet eine Auswahl von über 800 Casinospielen. Für Vielspieler wie uns bietet das 6-stufige VIP Programm den perfekten Rahmen. Es ist wichtig, in lizenzierten Online Casinos zu spielen, da sie Sicherheit, Fairness und den Schutz deiner Spielerdaten garantieren! Die besten Online Casinos bieten aufregende Boni wie Willkommensboni, Freispiele, Reload Boni und exklusive VIP-Programme! Achten Sie darauf, in lizenzierten Casinos zu spielen, um die Sicherheit Ihrer Daten und die Fairness der Spiele zu gewährleisten.

    References:
    https://online-spielhallen.de/netbet-casino-auszahlung-ihr-umfassender-leitfaden/

  2. F1 Casino Auszahlungsmethoden Avatar

    Ein gutes Casino mit Echtgeld überzeugt durch eine breite Auswahl an Spielen. Um ein Casino mit Echtgeld objektiv bewerten zu können, braucht
    es klare Testkriterien. Die Auswahl an Casinos mit Echtgeld Slots ist groß.
    Inzwischen gibt es auf dem deutschen Markt eine große Anzahl an Echtgeld Casinos.

    Welche Echtgeld Casinos überzeugen, worauf du achten musst
    und alle weitere wichtigen Infos findest du in diesem Artikel.
    Einzahlungsboni sind Bargeldbelohnungen, die Sie erhalten, wenn Sie Geld in ein Online-Casino einzahlen. Die Auszahlungsprozentsätze geben an,
    wie viel die Spieler bei einem Spiel durchschnittlich pro gesetztem Euro gewinnen.
    Eine gültige Glücksspiellizenz garantiert Seriosität, höchste Standards und Fairness
    für legale Online Casinos. Diese Sicherheitsstandards beruhen auf einer Glücksspiellizenz, die sichere und
    faire Spielstandards fordert. Die Gemeinsame Glücksspielbehörde der Länder (GGL) ist die zentrale Institution für die Lizenzierung und Regulierung von Glücksspielanbietern in Deutschland.
    Dieses Casino bietet eine beeindruckende Auswahl an Spielen, die von führenden Softwareanbietern entwickelt wurden. Spieler können die StarGames-App sowohl für Android als auch
    für iOS herunterladen, was ihnen ermöglicht, ihre Lieblingsspiele jederzeit und überall zu genießen.

    References:
    https://online-spielhallen.de/tipico-casino-deutschland-ihr-umfassender-einblick-in-das-online-glucksspiel/

  3. bizzo casino kundenservice Avatar

    Die beste Online Casino App Deutschland bietet volle Funktionalität,
    intuitive Bedienung und optimierte Ladezeiten. Auch Tischspiele wie Blackjack oder Roulette können bei richtiger Strategie im Casino Deutschland Online hohe Gewinne ermöglichen. Klassiker wie Mega Moolah, Starburst oder Legacy of Dead zählen zu den beliebtesten Titeln, da sie sowohl häufige kleinere Gewinne als auch große Jackpots bieten. Die
    profitabelsten Spiele in deutsche Online Casinos sind Slots mit hohen RTP-Werten und Bonusfunktionen. Hohe Gewinne
    sind in Online Casinos Deutschland vor allem in Plattformen möglich,
    die hohe RTP-Werte (Return to Player) anbieten.
    Sie bietet eine verlässliche Übersicht über seriöse und lizenzierte
    Anbieter, die hohe Sicherheitsstandards, faire Spielbedingungen und einen umfassenden Spielerschutz gewährleisten.
    Echtgeldspiele bieten dabei nicht nur Spannung, sondern auch die Chance auf
    echte Gewinne und schnelle Auszahlungen. Für deutsche Spieler ist es daher essenziell, eine verlässliche
    Online Casinos Bestenliste zu nutzen, die nur seriöse und lizenzierte
    Anbieter enthält.

    References:
    https://online-spielhallen.de/umfassende-bewertung-von-cocoa-casino-deutschland/

  4. CraigKab Avatar
    CraigKab

    Umass India Pharm Umass India Pharm buy medicines online in india

  5. nvidia treiber auto updates ausschalten Avatar

    Die erste Glücksspielmaschine dieser Art kam schon 1898
    auf den Markt und hatte auch den typischen Seitenarm zum
    Spielen. Casino Spiele mit Echtgeld-Gewinnen und regelmäßig auch Online-Slots machen es möglich Sie sind heute eine der beliebtesten Formen des Glücksspiels und haben in der
    Regel drei oder mehr Walzen, auf denen Symbole erscheinen.
    Von Slots bis Live Poker kannst du hier ohne Anmeldung und ohne Einzahlung spielen.
    Du suchst kostenlose Casino Spiele und Freispiele
    ohne Einzahlung? Slotpark Dollar können nicht gegen Geld
    getauscht oder in irgendeiner Form ausbezahlt, sondern nur verwendet
    werden, um Spiele zu spielen. Such einfach dein Spiel aus, klick auf den „Jetzt spielen!
    So kannst du Slots wie Lucky Lady’s Charm™ oder Faust™ ohne
    jegliche Verpflichtung spielen. Einfach den Lieblingsslot aus
    der Liste auswählen, Willkommensbonus einstreichen und sofort loslegen –
    natürlich mit vollem Funktionsumfang und in Novomatic-Originalqualität.
    Dank des Bonussymbols, das zu Beginn der Freirunden gewählt
    wird und sukzessive auch alle Felder der
    Walzen bedecken kann, stehen die Chancen auf den Jackpot in den Freispielen besonders hoch!

    References:
    https://online-spielhallen.de/15-top-boni-ohne-einzahlung-de-2025-slots-tipps/

Leave a Reply

Your email address will not be published. Required fields are marked *