ホームページ  >  記事  >  バックエンド開発  >  thinkphp3.xにおける変数の取得とフィルタリング方法の詳細説明、thinkphp3.x_PHPチュートリアルの詳細説明

thinkphp3.xにおける変数の取得とフィルタリング方法の詳細説明、thinkphp3.x_PHPチュートリアルの詳細説明

WBOY
WBOYオリジナル
2016-07-12 08:50:26809ブラウズ

thinkphp3における変数の取得方法とフィルタリング方法を詳しく解説。参考のために皆さんと共有してください。詳細は次のとおりです:

ここでは、ThinkPHP で変数とフィルター変数を使用する方法を学びます。

Web開発の過程では、システム変数やユーザーが送信したデータを取得する必要があることがよくありますが、これらの変数データは注意しないとセキュリティリスクを引き起こす可能性があります。 ThinkPHP によって提供されているため、簡単に取得して変数を制御できます。

1. 変数を取得します

1. まずは変数の取得方法について説明します。

最初の方法: 従来の取得方法。開発プロセス中に従来の方法を使用してさまざまなシステム変数を取得できます。例:

リーリー

従来の方法を直接使用して取得することはお勧めできません。統一されたセキュリティ処理メカニズムがなく、後で調整するのがより面倒になるためです。

2 番目の方法: Action クラスによって提供される動的メソッドを使用します

システムの Action クラスは、GET、POST、PUT、REQUEST、SESSION、COOKIE、SERVER、GLOBALS パラメータを含むシステム変数の強化された取得メソッドを提供し、変数値の取得に加えて、変数フィルタリングとデフォルト値の使用サポートも提供します。非常に簡単です。アクションで次のメソッドを呼び出すだけです:

リーリー

呼び出し形式は次​​のとおりです:

$this->メソッド名("変数名",["フィルターメソッド"],["デフォルト値"])

サポートされているメソッド名:

_get GETパラメータを取得します

_post POST パラメーターを取得します

_param は、GET、POST、または PUT パラメータを取得するリクエストのタイプを自動的に決定します _request は REQUEST パラメーターを取得します
_put PUT パラメーターを取得します
_session は $_SESSION パラメータを取得します
_cookie $_COOKIE パラメータを取得します
_server $_SERVER パラメーターを取得します
_globals は $GLOBALS パラメータを取得します


変数名:(必ず)取得するシステム変数の名前です

フィルタリング方法: (オプション) 任意の組み込み関数またはカスタム関数名を使用できます。指定しない場合、デフォルトの htmlspecialchars 関数がセキュリティ フィルタリングに使用されます (DEFAULT_FILTER パラメータによって構成されます)。メソッド名

つまり、次のように呼び出した場合:

リーリー

最終的な呼び出し結果は htmlspecialchars($_GET["name"]) です。フィルタリング方法を変更したい場合は、次を使用できます。

リーリー

デフォルト値: (オプション) 取得するパラメータ変数が存在しない場合に設定されるデフォルト値です。例:

リーリー

$_GET["id"]が存在しない場合は0が返されます。

デフォルト値が設定されていない場合、システムはデフォルトで NULL を返します。

他のメソッドも同様に使用されます。

大きな違いはないようですが、明らかな利点があります。つまり、これらの変数の統合フィルタリングを追加または変更する必要がある場合、通常は変数取得用のコードを変更する必要はなく、プロジェクト構成ファイルに構成パラメーターを追加します。例:

リーリー

動的に取得されたすべての変数の統合フィルタリングには、strip_tags メソッドを使用します。たとえば、次のような複数のフィルタリング メソッドもサポートされます。 リーリー

は、strip_tags フィルタリングが最初に実行され、次に htmlspecialchars フィルタリングが実行されることを意味します。

特定の変数を取得するときにフィルタリング方法をカスタマイズする必要がある場合は、次のように変更できます:

リーリー

プロジェクト設定で統一変数フィルタリング方法を設定しているが、一部の変数をフィルタリングしたくない場合は、次を使用できます:

リーリー

パラメータが複数の送信メソッドから取得される可能性がある場合は、_param メソッドを使用してパラメータをより簡単に取得できます。例:

リーリー

現在 get モードで送信された場合、

と同等です リーリー

現在の投稿方法がpostの場合は

と同等 リーリー

put モードで送信された場合、

と同等です リーリー

その利点は当然明白であり、同じメソッドで異なる送信タイプの変数を受け入れることができ、異なるパラメーターを取得するために手動で判断する必要がありません。

2. URLパラメータを取得します

場合によっては、URL パラメーターを取得する必要がある場合もあります。一般的には、get 変数を使用して URL パラメーターを取得するだけで十分ですが、カスタマイズされた URL やルーティングでは、URL のパラメーターが不規則になる場合があります。この場合、別の方法を使用してそれらを取得できます。 たとえば、現在の URL アドレスは次のとおりです:

http://localhost/index.php/news/hello_world/thinkphp

パラメータを取得したい場合は、以下を使用できます:

リーリー

ただし、変数取得の_param(数値)メソッドはPATHINFOモードのURLアドレスのみ有効です

3. 変数フィルタリング

Action クラスが提供するメソッドを使用して変数を取得およびフィルターする方法はすでに学習しましたが、これらの動的メソッドを呼び出さずにデータをフィルターするにはどうすればよいでしょうか? ThinkPHP は、データ フィルタリング操作を実行する 2 つの方法も提供します:

最初に: グローバル変数フィルタリングを設定します

这种情况是针对一些会在多使用的情况,可以通过配置全局过滤 简化操作,例如在项目配置文件中添加参数:

'VAR_FILTERS'=>'strip_tags'

则会对全局的get和post变量进行过滤,其他类型的系统变量需要自行过滤。

第二:在写入数据库之前进行变量过滤

如果你的变量数据是要写入到数据库的话,可以在数据写入数据库之前调用filter方法对数据进行安全过滤,例如:

$this->data($data)->filter('strip_tags')->add();

在执行add方法之前,会对$data数据进行strip_tags过滤处理。但是,这种方式下面,filter方法不支持多个过滤方法。

四、总结

使用ThinkPHP,我们可以轻松地对系统变量的获取和过滤,你的开发功力明显提升了不少。加油,后面还会讲解如何使用路由。

PS:这里推荐几款本站的格式化美化工具,相信大家在以后的开发中能够用得上:

php代码在线格式化美化工具:
http://tools.jb51.net/code/phpformat

JavaScript代码美化/压缩/格式化/加密工具:
http://tools.jb51.net/code/jscompress

在线XML格式化/压缩工具:
http://tools.jb51.net/code/xmlformat

JSON代码格式化美化工具:
http://tools.jb51.net/code/json

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat

sql代码在线格式化美化工具:
http://tools.jb51.net/code/sqlcodeformat

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《PHP中cookie用法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1133132.htmlTechArticlethinkphp3.x中变量的获取和过滤方法详解,thinkphp3.x详解 本文实例讲述了thinkphp3.x中变量的获取和过滤方法。分享给大家供大家参考,具体如下...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。