méthode thinkphp i
La méthode I de ThinkPHP est nouvelle dans la version 3.1.3, si vous l'êtes avant Pour le 3.*, vous pouvez vous référer directement à la section variables de la série de didacticiels de démarrage rapide 3.1.
Vue d'ensemble
Comme vous pouvez le constater, la méthode I est un nouveau membre des nombreuses fonctions à une seule lettre de ThinkPHP, et son nom vient de l'anglais Input (input) .Il est principalement utilisé pour obtenir les variables d'entrée du système de manière plus pratique et sûre. Il peut être utilisé 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 :
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
Nous 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 la valeur par défaut :
echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0 echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串
Utiliser le filtrage par méthode :
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, on peut obtenir des variables de post ou autre types d'entrée, 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']
le type de variable param est une méthode d'acquisition de variables 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, cela équivaut à $_GET['id '], si le type de requête actuel est POST ou PUT, alors cela équivaut à obtenir $_POST['id'] ou l'identifiant du paramètre PUT.
Et les variables de type param peuvent également obtenir des paramètres d'URL à l'aide d'index numériques (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 on peut passer
echo I('param.1'); // 输出2013 echo I('param.2'); // 输出06 echo I('param.3'); // 输出01
En fait, la manière d'écrire le type de variable param peut être simplifiée comme :
I('id'); // 等同于 I('param.id') I('name'); // 等同于 I('param.name')
Filtrage des variables
en utilisant 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 paramètre VAR_FILTERS a été modifié en filtrage récursif utilisant. la méthode array_walk_recursive, qui est principalement utilisée pour le filtrage. L'exigence de la méthode 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 :
'VAR_FILTERS'=>'filter_default'
Si vous devez filtrer plusieurs fois, vous pouvez utiliser :
'VAR_FILTERS'=>'filter_default,filter_exp'
La méthode filter_exp est une méthode de filtrage de sécurité intégrée au framework, qui est utilisée pour empêcher les attaques par injection à l'aide du 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 :
'DEFAULT_FILTER' => 'htmlspecialchars'
Autrement dit, toutes les variables d'acquisition de la méthode I seront filtrées par htmlspecialchars. , puis :
I('get.name'); // 等同于 htmlspecialchars($_GET['name'])
De même, ce paramètre peut également prendre en charge plusieurs filtres, par exemple :
'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'
I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))
Si nous spécifions la méthode de filtrage lors de l'utilisation de la méthode I, le paramètre DEFAULT_FILTER sera ignoré, par exemple exemple :
echo I('get.name','','strip_tags'); // 等同于 strip_tags($_GET['name'])
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 le filtrage ), sinon il appellera la méthode filter_var intégrée de PHP pour le traitement de filtrage, par exemple :
I('post.email','',FILTER_VALIDATE_EMAIL);
signifie que $_POST['email'] sera formaté, et s'il ne répond pas aux exigences, un champ vide la chaîne sera renvoyée.
(Pour plus de formats de vérification, veuillez vous référer au manuel officiel pour l'utilisation de filter_var.)
Ou vous pouvez utiliser l'identification de caractère suivante :
I('post.email','','email');
Les noms de filtres pris en charge doivent être une valeur valide dans la méthode filter_list (différents environnements de serveur peuvent être différents). Les supports possibles incluent :
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
Dans certains cas particuliers, nous ne souhaitons effectuer aucun filtrage, même si DEFAULT_FILTER a des paramètres, vous pouvez utilisez :
I('get.name','',NULL);
Une fois le paramètre de filtrage défini sur NULL, cela signifie qu'aucun filtrage ne sera effectué.
Cet article provient de la colonne d'articles techniques du framework ThinkPHP : http://www.php.cn/phpkj/thinkphp/
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!