ThinkPHP-I-Methode
Die I-Methode von ThinkPHP ist neu in Version 3.1.3, falls Sie zuvor für die In der 3.*-Version können Sie direkt auf den Variablenabschnitt der 3.1-Schnellstart-Tutorialreihe verweisen.
Übersicht
Wie Sie sehen können, ist die I-Methode ein neues Mitglied der vielen Ein-Buchstaben-Funktionen von ThinkPHP, und ihr Name stammt vom englischen Input (Eingabe). Es wird hauptsächlich verwendet, um Systemeingabevariablen bequemer und sicherer zu erhalten. Das Verwendungsformat ist wie folgt:
I('变量类型.变量名',['默认值'],['过滤方法'])
Der Variablentyp bezieht sich auf die Anforderungsmethode oder den Eingabetyp, einschließlich:
Hinweis: Bei Variablentypen wird die Groß-/Kleinschreibung nicht beachtet.
Variablennamen berücksichtigen ausschließlich die Groß-/Kleinschreibung.
Standardwert und Filtermethode sind optionale Parameter.
Verwendung
Wir nehmen den Variablentyp GET als Beispiel, um die Verwendung der I-Methode zu veranschaulichen:
echo I('get.id'); // 相当于 $_GET['id'] echo I('get.name'); // 相当于 $_GET['name']
Unterstützt den Standardwert:
echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0 echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串
Methodenfilterung verwenden:
echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
unterstützt das direkte Abrufen des gesamten Variablentyps, zum Beispiel:
I('get.'); // 获取整个$_GET 数组
Auf die gleiche Weise können wir Variablen vom Typ post oder andere erhalten Eingabetypen, zum Beispiel:
I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串 I('session.user_id',0); // 获取$_SESSION['user_id'] 如果不存在则默认为0 I('cookie.'); // 获取整个 $_COOKIE 数组 I('server.REQUEST_METHOD'); // 获取 $_SERVER['REQUEST_METHOD']
param variable type ist eine Framework-spezifische Variablenerfassungsmethode, die die automatische Bestimmung des aktuellen Anforderungstyps unterstützt, zum Beispiel:
echo I('param.id');
Wenn der aktuelle Anforderungstyp ist GET entspricht $_GET['id']. Wenn der aktuelle Anforderungstyp POST oder PUT ist, entspricht es dem Abrufen der Parameter-ID $_POST['id'] oder PUT.
Und Variablen vom Parametertyp können auch numerische Indizes verwenden, um URL-Parameter abzurufen (der PATHINFO-Modusparameter muss gültig sein, unabhängig davon, ob es sich um GET oder POST handelt), zum Beispiel:
Aktuelle Zugriffs-URL-Adresse ist
http://serverName/index.php/New/2013/06/01
, dann können wir
echo I('param.1'); // 输出2013 echo I('param.2'); // 输出06 echo I('param.3'); // 输出01
übergeben. Tatsächlich kann die Schreibweise des Parametervariablentyps wie folgt vereinfacht werden:
I('id'); // 等同于 I('param.id') I('name'); // 等同于 I('param.name')
Variablenfilterung
Bei der Verwendung der I-Methode durchlaufen Variablen tatsächlich zwei Filter. Die globale Filterung erfolgt durch die Konfiguration des Parameters VAR_FILTERS. Hierbei ist zu beachten, dass der Filtermechanismus des Parameters VAR_FILTERS auf rekursive Filterung geändert wurde Verwenden der Methode array_walk_recursive, die hauptsächlich zum Filtern verwendet wird. Die Anforderung der Methode besteht darin, dass sie als Referenz zurückgegeben werden muss. Daher ist das Festlegen von htmlspecialchars hier ungültig. Sie können eine Methode anpassen, zum Beispiel:
function filter_default(&$value){ $value = htmlspecialchars($value); }
und Konfigurieren Sie dann:
'VAR_FILTERS'=>'filter_default'
Wenn Sie mehrmals filtern müssen, können Sie Folgendes verwenden:
'VAR_FILTERS'=>'filter_default,filter_exp'
Die Methode filter_exp ist eine in das Framework integrierte Sicherheitsfiltermethode, die zur Verhinderung von Injektionsangriffen verwendet wird die EXP-Funktion des Modells.
Da der Parameter VAR_FILTERS einen globalen Filtermechanismus festlegt und rekursive Filterung verwendet, empfehlen wir die direkte Filterung der Variablen, außer im dritten Schritt der I-Methode Parametereinstellung Filtermethode, Sie können die Filterung auch durch Konfigurieren des Parameters DEFAULT_FILTER festlegen. Tatsächlich lautet die Standardeinstellung dieses Parameters:
'DEFAULT_FILTER' => 'htmlspecialchars'
Mit anderen Worten, alle Erfassungsvariablen der I-Methode werden nach htmlspecialchars gefiltert , dann:
I('get.name'); // 等同于 htmlspecialchars($_GET['name'])
In ähnlicher Weise kann dieser Parameter auch mehrere Filter unterstützen, zum Beispiel:
'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'
I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))
Wenn wir bei Verwendung der I-Methode die Filtermethode angeben, wird die Einstellung von DEFAULT_FILTER ignoriert. zum Beispiel:
echo I('get.name','','strip_tags'); // 等同于 strip_tags($_GET['name'])
Wenn der dritte Parameter der I-Methode im Funktionsnamen übergeben wird, bedeutet dies, dass die Funktion aufgerufen wird, um die Variable zu filtern und zurückzugeben (wenn die Variable ein Array ist, wird array_map automatisch verwendet). Filterung), andernfalls wird die in PHP integrierte filter_var-Methode zur Filterverarbeitung aufgerufen. Beispiel:
I('post.email','',FILTER_VALIDATE_EMAIL);
bedeutet, dass $_POST['email'] formatiert wird. Wenn es die Anforderungen nicht erfüllt, wird ein Es wird eine leere Zeichenfolge zurückgegeben.
(Weitere Verifizierungsformate finden Sie im offiziellen Handbuch zur Verwendung von filter_var.)
Oder Sie können die folgende Zeichenidentifikation verwenden:
I('post.email','','email');
Unterstützte Filternamen müssen vorhanden sein ein gültiger Wert in der filter_list-Methode (verschiedene Serverumgebungen können unterschiedlich sein):
int boolean float validate_regexp validate_url validate_email validate_ip string stripped encoded special_chars unsafe_raw email url number_int number_float magic_quotes callback
In einigen Sonderfällen möchten wir keine Filterung durchführen, auch wenn DEFAULT_FILTER über eine Einstellung verfügt, die Sie verwenden können :
I('get.name','',NULL);
Sobald der Filterparameter auf NULL gesetzt ist, bedeutet dies, dass keine Filterung durchgeführt wird.
Dieser Artikel stammt aus der technischen Artikelspalte zum ThinkPHP-Framework: http://www.php.cn/phpkj/thinkphp/
Das obige ist der detaillierte Inhalt vonthinkphp i-Methode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!