Einführung in die Methode thinkphp I

Freigeben: 2020-05-10 09:03:02
nach vorne
3293 Leute haben es durchsucht

Einführung in die Methode thinkphp I

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

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

Einführung in die Methode thinkphp I

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

unterstützt Standardwerte:

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

verwendet Methodenfilterung:

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 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']
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 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
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 das Schreiben des Parametervariablentyps wie folgt vereinfacht werden:

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

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

und dann konfigurieren:

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

bei Bedarf Um mehrere Filterungen durchzuführen, können Sie Folgendes verwenden:

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

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'
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.

Oder Sie können die folgende Zeichenidentifikation verwenden:

I('post.email','','email');
Nach dem Login kopieren

Die unterstützten Filternamen müssen gültige Werte in der filter_list-Methode sein (verschiedene Serverumgebungen können unterschiedlich sein). 🎜>

  • int

  • boolean

  • float

  • validieren_regexp

  • validate_url

  • validate_email

  • validate_ip

  • Zeichenfolge

  • entfernt

  • codiert

  • Sonderzeichen

  • unsafe_raw

  • E-Mail

  • URL

  • number_int

  • number_float

  • magic_quotes

  • Rückruf

In einigen Sonderfällen In Für den Fall, dass wir keine Filterung durchführen möchten, auch wenn DEFAULT_FILTER festgelegt wurde, können wir Folgendes verwenden:

I('get.name','',NULL);
Nach dem Login kopieren
Sobald der Filterparameter auf NULL gesetzt ist, bedeutet dies, dass keine Filterung mehr durchgeführt wird.

Empfohlenes Tutorial: „

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!

Verwandte Etiketten:
Quelle:cnblogs.com
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