ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp Iメソッドの紹介

thinkphp Iメソッドの紹介

尚
転載
2020-05-10 09:03:023305ブラウズ

thinkphp Iメソッドの紹介

ご覧のとおり、I メソッドは ThinkPHP の多くの 1 文字関数の新しいメンバーであり、その名前は主に利便性を高めるために使用される英語の入力 (input) に由来しています。どこでも使用できるシステム入力変数を取得します。使用形式は次のとおりです:

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

変数タイプは、リクエスト メソッドまたは入力タイプを指します。

thinkphp Iメソッドの紹介

## 注: 変数の型では大文字と小文字が区別されません。

変数名では大文字と小文字が厳密に区別されます。

デフォルト値とフィルタリング方法はオプションのパラメータです。

使用法

I メソッドの使用法を説明するために、GET 変数タイプを例として取り上げます:

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

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

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

変数タイプ全体の直接取得をサポートします。たとえば:

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

同様に、post または他の入力タイプの変数を取得できます。たとえば:

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

echo I('param.id');

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

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

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

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

の場合、

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

を渡すことができます。実際、param 変数タイプの記述は次のように簡略化できます。

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

変数フィルタリング

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

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

そして、必要に応じて次のように設定します:

'VAR_FILTERS'=>'filter_default'

複数のフィルタリングの場合、次を使用できます:

'VAR_FILTERS'=>'filter_default,filter_exp'

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


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

'DEFAULT_FILTER'        => 'htmlspecialchars'

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

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

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

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

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

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

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

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

は、$_POST['email'] の形式が検証されることを意味します。要件を満たさない場合は、空の文字列が返されます。戻ってきた。

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

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

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

  • int

  • ブール値

  • float

  • ##validate_regexp

  • validate_url

  • validate_email

  • ##validate_ip
  • 文字列
  • ストリップされた
  • エンコードされた
  • special_chars
  • #unsafe_raw
  • ##email

  • ##url

  • ##number_int
  • #number_float
  • magic_quotes
  • callback
  • これには特別なものがありますこの場合、DEFAULT_FILTER が設定されている場合でも、フィルタリングを実行したくない場合は、次を使用できます。
  • I('get.name','',NULL);
  • フィルタリング パラメータが NULL に設定されると、フィルタリングは実行されないことになります。

    推奨チュートリアル:「
  • TP5

以上がthinkphp Iメソッドの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。