ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP_PHP チュートリアルの I メソッドの使用方法の詳細な説明

ThinkPHP_PHP チュートリアルの I メソッドの使用方法の詳細な説明

不言
不言オリジナル
2018-05-24 14:05:397128ブラウズ

ThinkPHP の I メソッドは、英語の Input (入力) に由来する新しいメンバーで、主にシステム入力変数をより便利かつ安全に取得するために使用されます。次のように:

I('変数の型.変数名',['デフォルト値'],['フィルターメソッド'])
変数の型はリクエストメソッドまたは入力の型を指します。

各変数タイプの意味は次のとおりです:

変数の型 意味
get GETパラメータを取得
post POSTパラメータを取得
param リクエストのタイプを自動的に決定GET、POST、または PUT パラメータを取得するには
request REQUESTパラメータを取得
put PUTパラメータを取得
session $_SESSIONパラメータを取得
cookie $_COOKIE パラメータを取得
server $_SERVER パラメータを取得
globals $GLOBALS パラメータを取得


注: 変数の型では大文字と小文字が区別されません。
変数名では大文字と小文字が厳密に区別されます。
デフォルト値とフィルタリング方法はオプションのパラメータです。

1。メソッド フィルタリング:


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'] 则返回空字符串

同様に、次のような post または他の入力タイプの変数を取得できます。

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


param 変数タイプは、現在のリクエスト タイプの自動決定をサポートするフレームワーク固有の変数取得メソッドです。例:

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


現在のリクエスト タイプが GET の場合、それは同等です。リクエストタイプが POST または PUT の場合、$_POST['id'] または PUT パラメータ ID を取得するのと同じです。

param 型変数は、数値インデックスを使用して URL パラメータを取得することもできます (PATHINFO モード パラメータは、GET か POST かに関係なく有効である必要があります)。例:

現在のアクセス URL アドレスは

http://serverName/index です。 php/New/2013/06/01

その後、

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変数の型の記述は次のように簡略化できます:

echo I('param.id');


2. 変数のフィルタリング

I メソッドを使用する場合、変数は実際に 2 つのフィルターを通過します。1 つ目は、VAR_FILTERS パラメーターを設定することによって行われます。ここで、バージョン 3.1 以降では、VAR_FILTERS パラメーターのフィルター メカニズムが使用されることに注意してください。 array_walk_recursive メソッドを使用した再帰的フィルタリングに変更されました。はい、フィルタリング メソッドの主な要件は、参照によって返される必要があるため、ここで htmlspecialchars を設定することは無効です。たとえば、


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

If 複数のフィルタリングを実行する必要がある場合は、次を使用できます:

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


filter_exp メソッドは、フレームワークに組み込まれているセキュリティ フィルタリング メソッドであり、使用されます。モデルの EXP 関数を使用してインジェクション攻撃を防ぎます。

VAR_FILTERS パラメータはグローバル フィルタリング メカニズムを設定し、効率に影響を与える再帰的フィルタリングを使用するため、I メソッドの 3 番目のパラメータでフィルタリング方法を設定することに加えて、変数を直接フィルタリングすることをお勧めします。実際、このパラメータのデフォルト設定は次のとおりです:


'VAR_FILTERS'=>'filter_default'

つまり、I メソッドのすべての取得変数は htmlspecialchars によってフィルタリングされます。 :


'VAR_FILTERS'=>'filter_default,filter_exp'

同様に、このパラメーターは次のような複数のフィルターもサポートできます。

'DEFAULT_FILTER'    => 'htmlspecialchars'


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

I メソッドを使用するときにフィルター方法を指定する場合、DEFAULT_F ILTERは設定は無視されます。例:


'DEFAULT_FILTER'    => 'strip_tags,htmlspecialchars'

I メソッドの 3 番目のパラメーターが関数名で渡される場合、変数をフィルターしてそれを返す関数を呼び出します (変数が配列の場合、 array_map はフィルタリング処理に自動的に使用されます)、それ以外の場合は、PHP の組み込みの filter_var メソッドがフィルタリング処理に呼び出されます。例:


I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))

は、$_POST['email'] がフォーマットされることを意味します。要件を満たしていない場合は、空の文字列が返されます。

(その他の検証形式については、filter_var の使用に関する公式マニュアルを参照してください。)

または、次の文字識別方法を使用することもできます:


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

サポートされているフィルター名は、filter_list メソッドの有効な値である必要があります。 (サーバー環境によって異なる場合があります)、サポートされている可能性のあるものは次のとおりです:


I('post.email','',FILTER_VALIDATE_EMAIL);

一部の特殊なケースでは、フィルタリングを実行したくない場合があります。DEFAULT_FILTER が設定されている場合でも、使用できます:


I('post.email','','email');


フィルタリングパラメータが NULL に設定されると、フィルタリングは実行されなくなります。

http://www.bkjia.com/PHPjc/825333.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825333.htmlTechArticleThinkPHP の I メソッドは、多くの 1 文字関数の新しいメンバーです、その名前は英語の入力 (input) に由来しており、主にシステム入力変数をより便利かつ安全に取得するために使用され、あらゆる用途に使用できます...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。