Heim > PHP-Framework > Denken Sie an PHP > thinkphp i-Methode

thinkphp i-Methode

藏色散人
Freigeben: 2019-08-19 14:12:53
Original
2037 Leute haben es durchsucht

thinkphp i-Methode

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('变量类型.变量名',['默认值'],['过滤方法'])
Nach dem Login kopieren

Der Variablentyp bezieht sich auf die Anforderungsmethode oder den Eingabetyp, einschließlich:

thinkphp i-Methode

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']
Nach dem Login kopieren

Unterstützt den Standardwert:

echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0
echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串
Nach dem Login kopieren

Methodenfilterung verwenden:

echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
Nach dem Login kopieren

unterstützt das direkte Abrufen des gesamten Variablentyps, zum Beispiel:

I('get.'); // 获取整个$_GET 数组
Nach dem Login kopieren

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']
Nach dem Login kopieren

param variable type ist eine Framework-spezifische Variablenerfassungsmethode, die die automatische Bestimmung des aktuellen Anforderungstyps unterstützt, zum Beispiel:

echo I('param.id');
Nach dem Login kopieren

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
Nach dem Login kopieren

, dann können wir

echo I('param.1'); // 输出2013
echo I('param.2'); // 输出06
echo I('param.3'); // 输出01
Nach dem Login kopieren

übergeben. Tatsächlich kann die Schreibweise des Parametervariablentyps wie folgt vereinfacht werden:

I('id'); // 等同于 I('param.id')
I('name'); // 等同于 I('param.name')
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

und Konfigurieren Sie dann:

'VAR_FILTERS'=>'filter_default'
Nach dem Login kopieren

Wenn Sie mehrmals filtern müssen, können Sie Folgendes verwenden:

'VAR_FILTERS'=>'filter_default,filter_exp'
Nach dem Login kopieren

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'
Nach dem Login kopieren

Mit anderen Worten, alle Erfassungsvariablen der I-Methode werden nach htmlspecialchars gefiltert , dann:

I('get.name'); // 等同于 htmlspecialchars($_GET['name'])
Nach dem Login kopieren

In ähnlicher Weise kann dieser Parameter auch mehrere Filter unterstützen, zum Beispiel:

'DEFAULT_FILTER'        => 'strip_tags,htmlspecialchars'
Nach dem Login kopieren
I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))
Nach dem Login kopieren

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'])
Nach dem Login kopieren

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);
Nach dem Login kopieren

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');
Nach dem Login kopieren

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
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage