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 :
<🎜. >
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']
echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0 echo I('get.name',''); // 如果不存在$_GET['name'] 则返回空字符串
echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
I('get.'); // 获取整个$_GET 数组
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']
echo I('param.id');
http://serverName/index.php/New/2013/06/01
echo I('param.1'); // 输出2013 echo I('param.2'); // 输出06 echo I('param.3'); // 输出01
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 :
'VAR_FILTERS'=>'filter_default'
si nécessaire Pour effectuer plusieurs filtrages, 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 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 :
'DEFAULT_FILTER' => 'htmlspecialchars'
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 de DEFAULT_FILTER sera ignoré, par 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 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 une chaîne vide sera renvoyée.
Ou vous pouvez utiliser l'identification de caractères suivante :
I('post.email','','email');
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 :<). 🎜>
intI('get.name','',NULL);
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!