is_int(); vs POST und GET Werte

Beim Programmieren sollte der Grundsatz gelten, dass man niemals dem Userinput vertraut.
Möchte man überprüfen, ob der Wert, der im Formular eingegebene wurde, ein Integer ist, denkt man sofort daran, die PHP eigene Funktion is_int(); zu benutzen.
Dies könnte man so machen:

if (!is_int($_POST['integer'])) {
 echo "kein Integer";
}

POST und GET Werte sind aber immer Strings, auch dann, wenn der Inhalt selber ein Integer ist. Deswegen kann man die Funktion isint(); nicht zum Validieren nutzen.
Statt dessen kann man die Funktion preg
match zum Validieren verwenden:

if (!preg_match("/^[\d+(.\d+|$)]+$/", $_POST['integer'])) {
 echo "kein Integer";
}

Tech Topic(s) des Artikels