Maison >cadre php >PensezPHP >thinkphp I introduction à la méthode

thinkphp I introduction à la méthode

尚
avant
2020-05-10 09:03:023322parcourir

thinkphp I introduction à la méthode

Comme vous pouvez le constater, la méthode I est un nouveau membre des nombreuses fonctions à une seule lettre de ThinkPHP. Son nom vient de l'anglais Input (input) et est principalement utilisé pour plus de commodité. et la sécurité. Obtenez les variables d'entrée du système, qui peuvent être utilisées n'importe où. Le format d'utilisation est le suivant :

I('变量类型.变量名',['默认值'],['过滤方法'])

Le type de variable fait référence à la méthode de requête ou au type d'entrée, notamment :

thinkphp I introduction à la méthode

Remarque : les types de variables ne sont pas sensibles à la casse.

Les noms de variables sont strictement sensibles à la casse.

La valeur par défaut et la méthode de filtrage sont des paramètres facultatifs.

Utilisation

Prenons le type de variable GET comme exemple pour illustrer l'utilisation de la méthode I :

echo I('get.id'); // 相当于 $_GET['id']
echo I('get.name'); // 相当于 $_GET['name']

prend en charge les valeurs par défaut :

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

utilise filtrage des méthodes :

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

prend en charge l'obtention directe du type de variable entier, par exemple :

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

De la même manière, nous pouvons obtenir des variables de type post ou d'autres entrées, par exemple :

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 est une méthode d'acquisition de variable spécifique au framework qui prend en charge la détermination automatique du type de requête actuel, par exemple :

echo I('param.id');

Si le type de requête actuel est GET, il est équivalent à $_GET[' id'], si le type de requête actuel est POST ou PUT, cela équivaut à obtenir $_POST['id'] ou l'identifiant du paramètre PUT.

Et les variables de type param peuvent également utiliser un index numérique pour obtenir les paramètres d'URL (le paramètre du mode PATHINFO doit être valide, qu'il s'agisse de GET ou de POST), par exemple :

L'adresse URL d'accès actuelle est

http://serverName/index.php/New/2013/06/01

, alors nous pouvons passer

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

En fait, l'écriture du type de variable param peut être simplifiée comme :

I('id'); // 等同于 I('param.id')
I('name'); // 等同于 I('param.name')

Filtrage des variables<.>Lors de l'utilisation de la méthode I, les variables passent en fait par deux filtres. Le premier est le filtrage global. Le filtrage global se fait en configurant le paramètre VAR_FILTERS. Il faut noter ici qu'après la version 3.1, le mécanisme de filtrage du. Le paramètre VAR_FILTERS a été modifié pour utiliser la récursion de la méthode array_walk_recursive. Filtré, la principale exigence pour la méthode de filtrage est qu'elle doit être renvoyée par référence, donc la définition de htmlspecialchars ici n'est pas valide. Vous pouvez personnaliser une méthode, par exemple :

function filter_default(&$value){
    $value = htmlspecialchars($value);
 }
.

puis configurez :

&#39;VAR_FILTERS&#39;=>&#39;filter_default&#39;

si nécessaire Pour effectuer plusieurs filtrages, vous pouvez utiliser :

&#39;VAR_FILTERS&#39;=>&#39;filter_default,filter_exp&#39;

La méthode filter_exp est une méthode de filtrage de sécurité intégrée au framework, qui permet d'empêcher attaques par injection utilisant la fonction EXP du modèle.

Parce que le paramètre VAR_FILTERS définit un mécanisme de filtrage global et utilise un filtrage récursif, ce qui a un impact sur l'efficacité, nous recommandons donc de filtrer directement les variables, sauf dans la troisième étape de la méthode I. méthode de filtrage de paramétrage, vous pouvez également définir le filtrage en configurant le paramètre DEFAULT_FILTER En fait, le réglage par défaut de ce paramètre est :

&#39;DEFAULT_FILTER&#39;        => &#39;htmlspecialchars&#39;

Autrement dit, toutes les variables d'acquisition de la méthode I seront filtrées par htmlspecialchars. , alors :

I(&#39;get.name&#39;); // 等同于 htmlspecialchars($_GET[&#39;name&#39;])

De même, ce paramètre peut également prendre en charge plusieurs filtres, par exemple :

&#39;DEFAULT_FILTER&#39;        => &#39;strip_tags,htmlspecialchars&#39;
I(&#39;get.name&#39;); // 等同于 htmlspecialchars(strip_tags($_GET[&#39;name&#39;]))

Si nous spécifions la méthode de filtrage lors de l'utilisation de la méthode I, le paramètre de DEFAULT_FILTER sera ignoré, par exemple :

echo I(&#39;get.name&#39;,&#39;&#39;,&#39;strip_tags&#39;); // 等同于 strip_tags($_GET[&#39;name&#39;])

Si le troisième paramètre de la méthode I est passé dans le nom de la fonction, cela revient à appeler la fonction pour filtrer la variable et la renvoyer (lorsque la variable est un tableau, array_map est automatiquement utilisé pour filtrage), sinon il appellera la méthode filter_var intégrée de PHP pour le traitement de filtrage, par exemple :

I(&#39;post.email&#39;,&#39;&#39;,FILTER_VALIDATE_EMAIL);

signifie que $_POST['email'] sera formaté, et s'il ne répond pas aux exigences, un une chaîne vide sera renvoyée.

Ou vous pouvez utiliser l'identification de caractères suivante :

I(&#39;post.email&#39;,&#39;&#39;,&#39;email&#39;);

Les noms de filtres pris en charge doivent être des valeurs valides dans la méthode filter_list (différents environnements de serveur peuvent être différents :

int
  • booléen
  • float
  • validate_regexp
  • validate_url
  • validate_email
  • validate_ip
  • chaîne
  • dépouillé
  • codée
  • special_chars
  • unsafe_raw
  • email
  • url
  • number_int
  • number_float
  • magic_quotes
  • rappel
  • Dans certains cas particuliers Dans le cas où l'on ne souhaite effectuer aucun filtrage, même si DEFAULT_FILTER a été défini, on peut utiliser :
  • I(&#39;get.name&#39;,&#39;&#39;,NULL);
Une fois le paramètre de filtrage mis à NULL, cela signifie qu'aucun filtrage ne sera plus effectué.

Tutoriel recommandé : "

TP5

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer