Maison > cadre php > PensezPHP > méthode thinkphp i

méthode thinkphp i

藏色散人
Libérer: 2019-08-19 14:12:53
original
2068 Les gens l'ont consulté

méthode thinkphp i

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('变量类型.变量名',['默认值'],['过滤方法'])
Copier après la connexion

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

méthode thinkphp i

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']
Copier après la connexion

Prend en charge la valeur par défaut :

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

Utiliser le filtrage par méthode :

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

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

I('get.'); // 获取整个$_GET 数组
Copier après la connexion

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']
Copier après la connexion

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');
Copier après la connexion

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
Copier après la connexion

, alors on peut passer

echo I('param.1'); // 输出2013
echo I('param.2'); // 输出06
echo I('param.3'); // 输出01
Copier après la connexion

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')
Copier après la connexion

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);
}
Copier après la connexion

puis. configurez :

'VAR_FILTERS'=>'filter_default'
Copier après la connexion

Si vous devez filtrer plusieurs fois, vous pouvez utiliser :

'VAR_FILTERS'=>'filter_default,filter_exp'
Copier après la connexion

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'
Copier après la connexion

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

I('get.name'); // 等同于 htmlspecialchars($_GET['name'])
Copier après la connexion

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

'DEFAULT_FILTER'        => 'strip_tags,htmlspecialchars'
Copier après la connexion
I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))
Copier après la connexion

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'])
Copier après la connexion

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);
Copier après la connexion

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');
Copier après la connexion

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
Copier après la connexion

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);
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal