ThinkPHPのI方法使用詳細
5687 ワード
ThinkPHPのI方法は多くの単字数関数の中の新しいメンバーで、英語Input(入力)から命名されています。主により便利で安全な取得システムに変数を入力するために使用されています。
I('変数タイプ.変数名',''標準値',''フィルタ方法')
変数タイプとは、要求方式または入力タイプのことです。
各変数の種類の意味は以下の通りです。
変数の種類
意味
get
GETパラメータを取得
ベスト
POSTパラメータを取得
パラム
自動判定要求タイプは、GET、POSTまたはPUTパラメータを取得する。
request
REQUSTを取得 パラメータ
put
PUTを取得 パラメータ
セッション
取得 $_SESSION パラメータ
クッキー
取得 $_COOKIE パラメータ
server
取得 $_SERVER パラメータ
globals
取得 $GLOOBALSパラメータ
注意:変数型は大文字と小文字を区別しません。
変数名は、大文字と小文字を区別します。
標準値とフィルタリング方法はいずれもオプションのパラメータです。
1.使い方:
GET変数のタイプを例にとって、I方法の使用を説明します。
また、paramタイプ変数は、URLパラメータ(PATHINFOモードパラメータが有効である必要があります。GETもPOST方式も有効です。)をデジタルインデックスで取得することもできます。
現在のアクセスURLアドレスは
http://serverName/index.php/New/2013/06/01
じゃ、私達は通過できます。
Iメソッドを使用すると変数は2つのフィルタリングを経ています。まずグローバルフィルタリングです。全体フィルタリングはVARを配置することによって行われます。FILTARSパラメータは、ここで注意してください。3.1バージョンの後、VER_FILTERSパラメータのフィルタリング機構はarray_に変更されました。ワルク.recursive方法は再帰的にフィルタリングされました。主にフィルタリング方法に対する要求は参照して返さなければならないので、ここにhtmlspecialcharsを設定するのは無効です。
VARなのでFILTERSパラメータは大域フィルタリング機構であり、また再帰フィルタリングを採用しており、効率に影響がありますので、直接変数フィルタリングを取得する方法を提案します。I方法の第三のパラメータ設定フィルタリング方法に加えて、DEFALT_を構成することもできます。FILTERパラメータの方式でフィルタを設定します。このパラメータのデフォルト設定は以下の通りです。
(より多くの検証フォーマットについては、公式マニュアルのfilter_を参照することができます。var用法
または次の文字で表示することができます。
もっと多くのthinkPHPに関する内容に興味がある読者は、当駅のテーマを調べてもいいです。「ThinkPHP入門教程」、「thinkPHPテンプレート操作技術のまとめ」、「ThinkPHP常用方法まとめ」、「smartyテンプレート入門基礎教程」および「PHPテンプレート技術まとめ」。
本論文で述べたいのですが、ThinkPHPフレームに基づくPHPプログラムの設計に役立ちます。
I('変数タイプ.変数名',''標準値',''フィルタ方法')
変数タイプとは、要求方式または入力タイプのことです。
各変数の種類の意味は以下の通りです。
変数の種類
意味
get
GETパラメータを取得
ベスト
POSTパラメータを取得
パラム
自動判定要求タイプは、GET、POSTまたはPUTパラメータを取得する。
request
REQUSTを取得 パラメータ
put
PUTを取得 パラメータ
セッション
取得 $_SESSION パラメータ
クッキー
取得 $_COOKIE パラメータ
server
取得 $_SERVER パラメータ
globals
取得 $GLOOBALSパラメータ
注意:変数型は大文字と小文字を区別しません。
変数名は、大文字と小文字を区別します。
標準値とフィルタリング方法はいずれもオプションのパラメータです。
1.使い方:
GET変数のタイプを例にとって、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
同じ方法で、私たちは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']
パラム変数タイプは、フレーム特有のサポートであり、現在の要求タイプを自動的に判断する変数取得方式であり、例えば、
echo I('param.id');
現在の要求のタイプがGETであれば、$uに相当する。GET['id']は、現在要求されているタイプがPOSTまたはPUTであれば、$uを取得するのに相当します。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')
2.変数フィルタリングIメソッドを使用すると変数は2つのフィルタリングを経ています。まずグローバルフィルタリングです。全体フィルタリングはVARを配置することによって行われます。FILTARSパラメータは、ここで注意してください。3.1バージョンの後、VER_FILTERSパラメータのフィルタリング機構はarray_に変更されました。ワルク.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方法の第三のパラメータ設定フィルタリング方法に加えて、DEFALT_を構成することもできます。FILTERパラメータの方式でフィルタを設定します。このパラメータのデフォルト設定は以下の通りです。
'DEFAULT_FILTER' => 'htmlspecialchars'
つまり、I方法のすべての取得変数はhmlspecialcharsフィルタリングされます。
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番目のパラメータは、関数名が入力されると、その関数を呼び出して変数をフィルタリングして返すことを表します。mapはフィルタ処理を行います。PHP内蔵のfilter_を呼び出します。var方法はフィルタ処理を行い、例えば:
I('post.email','',FILTER_VALIDATE_EMAIL);
に対するPOST['email']はフォーマット検証を行い、要求に合わない場合は空の文字列を返します。(より多くの検証フォーマットについては、公式マニュアルのfilter_を参照することができます。var用法
または次の文字で表示することができます。
I('post.email','','email');
サポートできるフィルタ名は、必ずfilter_でなければなりません。リスト方法における有効値(サーバ環境によっては異なる場合があります。)
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
いくつかの特殊な状況において、DEFAULT_でもフィルタリングを行いたくないです。FILTERはすでに設置されています。使用できます。
I('get.name','',NULL);
フィルタパラメータがNULLに設定されると、フィルタリングが行われなくなることを意味します。もっと多くのthinkPHPに関する内容に興味がある読者は、当駅のテーマを調べてもいいです。「ThinkPHP入門教程」、「thinkPHPテンプレート操作技術のまとめ」、「ThinkPHP常用方法まとめ」、「smartyテンプレート入門基礎教程」および「PHPテンプレート技術まとめ」。
本論文で述べたいのですが、ThinkPHPフレームに基づくPHPプログラムの設計に役立ちます。