PHP Filter
PHP-Filter werden verwendet, um Daten aus unsicheren Quellen wie Benutzereingaben zu validieren und zu filtern.
Was ist ein PHP-Filter?
PHP-Filter werden verwendet, um Daten aus unsicheren Quellen zu validieren und zu filtern.
Das Testen, Validieren und Filtern von Benutzereingaben oder benutzerdefinierten Daten ist ein wichtiger Bestandteil jeder Webanwendung.
Die Filter-Erweiterung von PHP wurde entwickelt, um die Datenfilterung einfacher und schneller zu machen.
Warum Filter verwenden?
Nahezu alle Webanwendungen sind auf externe Eingaben angewiesen. Diese Daten stammen normalerweise von Benutzern oder anderen Anwendungen (wie Webdiensten). Durch die Verwendung von Filtern können Sie sicherstellen, dass Ihre Anwendung den richtigen Eingabetyp erhält.
Sie sollten externe Daten immer filtern!
Eingabefilterung ist eines der wichtigsten Themen der Anwendungssicherheit.
Was sind externe Daten?
- Eingabedaten aus Formularen
- Cookies
- Daten von Webdiensten
- Servervariablen
- Ergebnisse von Datenbankabfragen
Funktionen und Filter
Um eine Variable zu filtern, verwenden Sie eine der folgenden Filterfunktionen:
- filter_var() – Filtert eine einzelne Variable mit einem angegebenen Filter
- filter_var_array() – Filtert mehrere Variablen mit demselben oder unterschiedlichen Filtern
- filter_input – Ruft eine Eingabevariable ab und filtert sie
- filter_input_array – Ruft mehrere Eingabevariablen ab und filtert sie mit demselben oder unterschiedlichen Filtern
Im folgenden Beispiel haben wir die Funktion filter_var() verwendet, um eine Ganzzahl zu validieren:
Beispiel
Der obige Code verwendet den Filter "FILTER_VALIDATE_INT", um die Variable zu filtern. Da die Ganzzahl gültig ist, gibt der obige Code aus:

Wenn wir versuchen, eine Nicht-Integer-Variable (wie "123abc") zu verwenden, wird ausgegeben: "Integer is not valid".
Eine vollständige Liste der Funktionen und Filter finden Sie in unseremPHP-Filter-Referenzhandbuch。
Validieren und Bereinigen
Es gibt zwei Arten von Filtern:
Validierungsfilter:
- Dient zum Validieren von Benutzereingaben
- Strikte Formatregeln (wie URL- oder E-Mail-Validierung)
- Gibt bei Erfolg den erwarteten Typ zurück, bei Fehler FALSE
Bereinigungsfilter:
- Wird verwendet, um angegebene Zeichen in einer Zeichenkette zuzulassen oder zu verbieten
- Keine Datenformatregeln
- Gibt immer eine Zeichenkette zurück
Optionen und Flags
Optionen und Flags werden verwendet, um einem bestimmten Filter zusätzliche Filteroptionen hinzuzufügen.
Verschiedene Filter haben unterschiedliche Optionen und Flags.
Im folgenden Beispiel haben wir filter_var() mit den Optionen "min_range" und "max_range" verwendet, um eine Ganzzahl zu validieren:
Beispiel
Genau wie im obigen Code müssen Optionen in einem assoziativen Array namens "options" abgelegt werden. Wenn ein Flag verwendet wird, muss es nicht im Array stehen.
Da die Ganzzahl "300" nicht innerhalb des angegebenen Bereichs liegt, lautet die Ausgabe des obigen Codes:
Not a valid integer
Eine vollständige Liste der Funktionen und Filter finden Sie in unseremPHP-Filter-ReferenzhandbuchSie können die verfügbaren Optionen und Flags für jeden Filter sehen.
Eingabe validieren
Versuchen wir, Eingaben aus einem Formular zu validieren.
Als Erstes müssen wir bestätigen, ob die Eingabedaten, nach denen wir suchen, vorhanden sind.
Dann filtern wir die Eingabedaten mit der Funktion filter_input().
Im folgenden Beispiel wird die Eingabevariable "email" an die PHP-Seite übergeben:
Beispiel
Das Testergebnis des obigen Beispiels lautet wie folgt:

Beitragserklärung
Das obige Beispiel enthält eine Eingabevariable (email), die über die "GET"-Methode gesendet wird:
- Prüfen Sie, ob eine Eingabevariable "email" vom Typ "GET" existiert
- Wenn die Eingabevariable existiert, prüfen Sie, ob es sich um eine gültige E-Mail-Adresse handelt
Eingabe bereinigen
Versuchen wir, eine von einem Formular gesendete URL zu bereinigen.
Zuerst müssen wir feststellen, ob die gesuchten Eingabedaten existieren.
Dann verwenden wir die Funktion filter_input(), um die Eingabedaten zu bereinigen.
Im folgenden Beispiel wird die Eingabevariable "url" an die PHP-Seite übergeben:
<?php
if(!filter_has_var(INPUT_GET, "url"))
{
echo("没有 url 参数");
}
else
{
$url = filter_input(INPUT_GET,
"url", FILTER_SANITIZE_URL);
echo $url;
}
?>
Beitragserklärung
Das obige Beispiel enthält eine Eingabevariable (url), die über die Methode "GET" gesendet wird:
- Prüfen Sie, ob eine Eingabevariable "url" vom Typ "GET" existiert
- Wenn diese Eingabevariable existiert, bereinigen Sie sie (entfernen Sie unzulässige Zeichen) und speichern Sie sie in der Variable $url
Wenn die Eingabevariable eine Zeichenfolge wie diese ist: "http://www.ruåånoøøob.com/", dann sieht die bereinigte Variable $url so aus:
Mehrere Eingaben filtern
Formulare bestehen normalerweise aus mehreren Eingabefeldern. Um wiederholte Aufrufe der Funktionen filter_var oder filter_input zu vermeiden, können wir filter_var_array oder die Funktion filter_input_array verwenden.
In diesem Beispiel verwenden wir die Funktion filter_input_array(), um drei GET-Variablen zu filtern. Die empfangenen GET-Variablen sind ein Name, ein Alter und eine E-Mail-Adresse:
Beispiel
Beitragserklärung
Das obige Beispiel enthält drei Eingabevariablen (name, age und email), die über die "GET"-Methode gesendet werden:
- Erstellen Sie ein Array, das die Namen der Eingabevariablen und die für die angegebenen Eingabevariablen verwendeten Filter enthält
- Rufen Sie die Funktion filter_input_array() mit den GET-Eingabevariablen und dem gerade erstellten Array als Parameter auf
- Prüfen Sie, ob die Variablen "age" und "email" in der Variable $result ungültige Eingabe enthalten. (Wenn ungültige Eingabe vorhanden ist, werden die Eingabevariablen nach Verwendung der Funktion filter_input_array() FALSE.)
Der zweite Parameter der Funktion filter_input_array() kann ein Array oder die ID eines einzelnen Filters sein.
Wenn der Parameter die ID eines einzelnen Filters ist, filtert dieser angegebene Filter alle Werte im Eingabe-Array.
Wenn der Parameter ein Array ist, muss dieses Array die folgenden Regeln befolgen:
- Es muss ein assoziatives Array sein, in dem die darin enthaltenen Eingabevariablen die Schlüssel des Arrays sind (z. B. die Eingabevariable "age")
- Die Werte dieses Arrays müssen Filter-IDs sein oder ein Array, das Filter, Flags und Optionen angibt.
Verwenden von Filter-Callback
Durch die Verwendung des FILTER_CALLBACK-Filters können Sie eine benutzerdefinierte Funktion aufrufen und sie als Filter verwenden. Dies gibt Ihnen die vollständige Kontrolle über die Datenfilterung.
Sie können Ihre eigenen benutzerdefinierten Funktionen erstellen oder vorhandene PHP-Funktionen verwenden.
Geben Sie die Funktion, die Sie als Filter verwenden möchten, gemäß der durch die Optionen angegebenen Methode an. Verwenden Sie im assoziativen Array den Namen "options".
Im folgenden Beispiel verwenden wir eine benutzerdefinierte Funktion, um alle "_" in "." umzuwandeln:
Beispiel
Das Ergebnis des obigen Codes wird unten angezeigt:

Beitragserklärung
Das obige Beispiel wandelt alle "_" in "." um:
- Erstellen Sie eine Funktion, die "_" durch "." ersetzt
- Rufen Sie die Funktion filter_var() mit dem FILTER_CALLBACK-Filter und einem Array auf, das unsere Funktion enthält