PHP-Filter
PHP-Filter wird verwendet, um zu validieren und Filterdaten aus unsicheren Quellen, wie Benutzereingabe.
Was ist ein PHP-Filter?
PHP Filter wird verwendet, um aus unsicheren Quellen zu validieren und Filterdaten.
Test, Validierung und Filter Benutzereingabe oder benutzerdefinierte Daten ist ein wichtiger Bestandteil jeder Web-Anwendung.
PHP Filter-Erweiterung ist so konzipiert, Filtern von Daten einfacher und schneller zu machen.
Warum einen Filter verwenden?
Fast alle Web-Anwendungen sind abhängig von externen Eingängen. Diese Daten kommen in der Regel von den Benutzern oder anderen Anwendungen (wie zB Web Services). Durch die Verwendung von Filtern können Sie sicherstellen, dass Anwendungen die richtige Eingabetyp erhalten.
Sie sollten immer externe Datenfilterung!
Eingangsfilterung ist die wichtigste Anwendung Sicherheitsfragen.
Was sind externe Daten?
- Die Eingabedaten aus einem Formular
- Kekse
- Web-Services-Daten
- Server-Variablen
- Database Query-Ergebnisse
Funktionen und Filter
Um eine Variable zu filtern, verwenden Sie eine der folgenden Filterfunktionen:
- filter_var () - eine einzige Variable durch einen spezifischen Filter zu filtern
- filter_var_array () - mehrere Variablen durch die gleichen oder verschiedene Filter zum Filtern
- filter_input - Holen Sie sich eine Eingangsgröße und filtern
- filter_input_array - mehr Eingangsvariablen, und von den gleichen oder verschiedenen Filtern sie zu filtern
Im folgenden Beispiel verwenden wir filter_var () Funktion validiert eine ganze Zahl:
<?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
Der obige Code verwendet die "FILTER_VALIDATE_INT" Filter, um die Variable zu filtern. Da die ganze Zahl ist legitim, so dass die obige Code gibt:
Wenn wir versuchen, eine Nicht-Integer-Variable (beispielsweise "123abc") zu verwenden, wird ausgegeben: "Integer nicht gültig".
Eine vollständige Liste der Funktionen und Filter, besuchen Sie unsere PHP Filter - Referenzhandbuch .
Validieren und Sanitizing
Es gibt zwei Arten von Filtern:
Validieren Filter:
- Gebrauchte Benutzereingaben zu validieren
- Strikte Formatregeln (wie URL oder E-Mail Bestätigung)
- Wenn dies gelingt, die erwartete Rendite-Typ, wenn es fehlschlägt FALSE zurück
Sanitizing Filter:
- Es verwendet, um zuzulassen oder die angegebene Zeichenfolge verbieten
- Keine Datenformat Regeln
- Immer geben die Zeichenfolge
Optionen und Fahnen
Optionen und Flags werden verwendet, um zusätzliche Filteroptionen zu den angegebenen Filter hinzuzufügen.
Verschiedene Filter haben unterschiedliche Optionen und Flags.
Im folgenden Beispiel verwenden wir filter_var () und "min_range" und "max_range" Option, um eine ganze Zahl zu überprüfen:
<?php $var=300; $int_options = array( "options"=>array ( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
Wie der Code oben, da die entsprechende Option muss in einem Array platziert werden in dem Namen "Optionen". Wenn ein Flag nicht innerhalb der Anordnung erforderlich.
Da die ganze Zahl "300" ist, ist es nicht innerhalb des spezifizierten Bereichs, der Ausgang des Code wird über sein:
不是一个合法的整数
Eine vollständige Liste der Funktionen und Filter, besuchen Sie unsere PHP Filter - Referenzhandbuch . Sie können für jeden Filter und Fahnen die verfügbaren Optionen zu sehen.
Validieren Eingang
Lassen Sie uns versuchen, eine Eingabe von einem Formular zu validieren.
Wir müssen erste, was zu tun ist, um zu bestätigen, dass die Eingangsdaten die wir suchen.
Dann benutzen wir filter_input () Funktion, um die eingegebenen Daten zu filtern.
Im Beispiel unten wird die Eingangsvariable "E-Mail", um die PHP-Seite übergeben:
<?php if(!filter_has_var(INPUT_GET, "email")) { echo("没有 email 参数"); } else { if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "不是一个合法的 E-Mail"; } else { echo "是一个合法的 E-Mail"; } } ?>
Beispiele für die obigen Ergebnisse waren wie folgt:
Beispiele erklärt
Das obige Beispiel hat eine Eingangsgröße von (E-Mail) "GET" Methode des Transfers:
- Nachweis der Anwesenheit von "E-Mail" Eingangsvariable "GET" type
- Wenn es eine Eingangsvariable zu erfassen, ob es eine gültige E-Mail-Adresse ist
Die Reinigung Eingang
Lassen Sie uns versuchen, von einer Form URL zu klären kommen.
Zunächst einmal müssen wir bestätigen, dass die Eingangsdaten die wir suchen.
Dann sterilisieren wir Eingangsdaten filter_input () Funktion.
In dem folgenden Beispiel wird die Eingangsvariable "url" zur 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; } ?>
Beispiele erklärt
Beispiele für die oben durch eine Eingangsvariable (url) Methode "GET" gesendet:
- Nachweis der Anwesenheit von "url" Eingangsvariablen "GET" type
- Wenn die Eingangsgröße vorhanden ist, (Entfernen von ungültigen Zeichen) seine Reinigung und speichert sie in der $ url-Variable
Wenn die Eingangsgröße ist ein String wie folgt: "http://www.ruaanoob.com/", die $ url variable nach der Reinigung ist wie folgt:
Eine Mehrzahl von Eingangsfilter
Formulare bestehen oft aus mehreren Eingabefeldern. Um zu vermeiden, immer wieder genannt filter_var oder filter_input Funktion, können wir die filter_input_array filter_var_array oder Funktion verwenden.
In diesem Fall verwenden wir filter_input_array () Funktion drei GET-Variablen zu filtern. Received GET-Variablen ist ein Name, ein Alter und eine E-Mail-Adresse:
<?php $filters = array ( "name" => array ( "filter"=>FILTER_SANITIZE_STRING ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, "options"=>array ( "min_range"=>1, "max_range"=>120 ) ), "email"=> FILTER_VALIDATE_EMAIL ); $result = filter_input_array(INPUT_GET, $filters); if (!$result["age"]) { echo("年龄必须在 1 到 120 之间。<br>"); } elseif(!$result["email"]) { echo("E-Mail 不合法<br>"); } else { echo("输入正确"); } ?>
Beispiele erklärt
Das obige Beispiel hat drei Eingangsvariablen (Name, Alter und E-Mail) über Methode "GET" übertragen:
- Legen Sie ein Array auf, die die Namen von Eingangsvariablen enthält verwendet, um die Eingangsgrößen zu spezifizieren und Filter
- () Funktion, Eingabeparameter, einschließlich der GET-Variablen und gerade eingestellt Array Anruf filter_input_array
- Erkennung $ result Variable "Alter" und "E-Mail" Eingangsgröße ist illegal. (Wenn es illegal Eingang, nach dem Gebrauch filter_input_array () Funktion, die Eingangsgröße ist FALSE.)
filter_input_array () Das zweite Argument der Funktion kann ein Array oder ein einzelner Filter-ID sein.
Wenn der Parameter ein einzelnes Filter-ID ist, dann wird der angegebene Filter filtern alle Eingabefeldwerte.
Wenn dieser Parameter ein Array ist, muss das Array mit den folgenden Regeln entsprechen:
- Muss ein assoziatives Array sein, eine Eingangsgröße enthält, ist ein Array Taste (zB "Alter" Eingangsgröße)
- Der Wert dieses Feldes muss eine Filter-ID, oder die Bestimmungen des Filters, Fahnen und Optionen Arrays
Filter verwenden Rückruf
Durch die Verwendung von FILTER_CALLBACK Filter, können Sie eine benutzerdefinierte Funktion aufrufen, verwenden Sie es als Filter zu verwenden. So haben wir die vollständige Kontrolle über die Datenfilterung.
Sie können Ihre eigene benutzerdefinierte Funktion, oder Sie verwenden können, eine bestehende PHP-Funktionen erstellen.
Sie werden bereit sein, die Filterfunktion zu verwenden, die nach den Bestimmungen festgelegten Optionen vorgegebenen Verfahren. In einem assoziativen Array mit den Namen "Optionen".
Im folgenden Beispiel verwenden wir eine benutzerdefinierte Funktion aller "_" in Leerzeichen umgewandelt:
<?php function convertSpace($string) { return str_replace("_", ".", $string); } $string = "www_w3big_com!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?>
Ergebnis des obigen Code ist der folgende:
Beispiele erklärt
Die obigen Beispiele alle "_" in ".":
- So erstellen Sie ein "_" ersetzt durch "." Funktion
- Rufen Sie filter_var () Funktion, die Parameter sind FILTER_CALLBACK Filter und Array mit unserer Funktion