Wie Sie sehen können, ist die I-Methode ein neues Mitglied der vielen Ein-Buchstaben-Funktionen von ThinkPHP. Ihr Name stammt vom englischen Input (Eingabe) und wird hauptsächlich aus Bequemlichkeitsgründen verwendet und Sicherheit. Systemeingabevariablen abrufen, die überall verwendet werden können:
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
Nehmen wir 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 Standardwerte:
echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0 echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串
verwendet Methodenfilterung:
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 Post- oder andere Eingabetypvariablen abrufen, 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 GET ist, entspricht er $_GET[' id']: Wenn der aktuelle Anforderungstyp POST oder PUT ist, entspricht dies 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 das Schreiben des Parametervariablentyps wie folgt vereinfacht werden:
I('id'); // 等同于 I('param.id') I('name'); // 等同于 I('param.name')
Variablenfilterung
Bei Verwendung der I-Methode durchlaufen die Variablen tatsächlich zwei Filter. Der erste ist die globale Filterung, die durch die Konfiguration des VAR_FILTERS-Parameters erfolgt Der Parameter VAR_FILTERS wurde geändert, um die Methodenrekursion array_walk_recursive zu verwenden. Die Hauptanforderung für die Filtermethode besteht darin, dass sie als Referenz zurückgegeben werden muss. Daher ist die Einstellung von htmlspecialchars hier ungültig. Sie können eine Methode anpassen, zum Beispiel:
function filter_default(&$value){ $value = htmlspecialchars($value); }
und dann konfigurieren:
'VAR_FILTERS'=>'filter_default'
bei Bedarf Um mehrere Filterungen durchzuführen, können Sie Folgendes verwenden:
'VAR_FILTERS'=>'filter_default,filter_exp'
Die filter_exp-Methode ist eine in das Framework integrierte Sicherheitsfiltermethode, die zur Vorbeugung verwendet wird Injektionsangriffe mithilfe der 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.
Oder Sie können die folgende Zeichenidentifikation verwenden:
I('post.email','','email');
Die unterstützten Filternamen müssen gültige Werte in der filter_list-Methode sein (verschiedene Serverumgebungen können unterschiedlich sein). 🎜>
I('get.name','',NULL);
TP5“
Das obige ist der detaillierte Inhalt vonEinführung in die Methode thinkphp I. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!