ホームページ バックエンド開発 PHPチュートリアル ThinkPHP の I メソッドの使用状況分析

ThinkPHP の I メソッドの使用状況分析

Jun 09, 2018 am 09:41 AM
thinkphp

ThinkPHP の I メソッドは、多くの単一文字関数の中で新しいメンバーであり、主にシステム入力変数をより便利かつ安全に取得するために使用され、どこでも使用できます。この記事では主に ThinkPHP の I メソッドを紹介します。必要な方は参考にしてください。

ThinkPHP の I メソッドは、英語の Input (入力) から来ています。システム入力変数を取得する方が便利かつ安全であり、使用形式は次のとおりです。
I('変数の種類.変数名',['デフォルト値'。 ],['フィルター メソッド'])
変数タイプは、リクエスト メソッドまたは入力タイプを指します。

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

#変数の種類意味getGET パラメータの取得postPOST パラメータの取得paramGET、POST、または PUT パラメータを取得するリクエスト タイプを自動的に決定しますrequestREQUEST パラメータの取得#put #session$_SESSION パラメータの取得#cookie$_COOKIE パラメータの取得server$_SERVER パラメータの取得globals$GLOBALS パラメータの取得


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

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']
ログイン後にコピー


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

echo I('param.id');
ログイン後にコピー


現在のリクエスト タイプが GET の場合、これは次のようになります。現在のリクエスト タイプが POST または PUT の場合、$_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')
ログイン後にコピー


##2 のように簡略化できます。 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 パラメータを設定してフィルタリングを設定することもできます。実際、このパラメータのデフォルト設定は次のとおりです。 I メソッドのすべての取得変数は htmlspecialchars によってフィルタリングされ、その後:

'DEFAULT_FILTER'  => 'htmlspecialchars'
ログイン後にコピー

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


I('get.name'); // 等同于 htmlspecialchars($_GET['name'])
ログイン後にコピー

'DEFAULT_FILTER'  => 'strip_tags,htmlspecialchars'
ログイン後にコピー


I メソッドを使用するときにフィルタリング方法を指定する場合、設定はDEFAULT_FILTER のパラメータは無視されます。例:

I('get.name'); // 等同于 htmlspecialchars(strip_tags($_GET['name']))
ログイン後にコピー


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

echo I('get.name','','strip_tags'); // 等同于 strip_tags($_GET['name'])
ログイン後にコピー

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

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

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

I('post.email','',FILTER_VALIDATE_EMAIL);
ログイン後にコピー

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

I('post.email','','email');
ログイン後にコピー

一部の特殊なケースでは、DEFAULT_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
ログイン後にコピー

# を使用できます。 # #フィルタリング パラメータが NULL に設定されると、フィルタリングは実行されないことになります。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。


関連する推奨事項:

Thinkphp での unique の使用


##
PUT パラメータの取得

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

thinkphpプロジェクトの実行方法 thinkphpプロジェクトの実行方法 Apr 09, 2024 pm 05:33 PM

ThinkPHP プロジェクトを実行するには、Composer をインストールし、Composer を使用してプロジェクトを作成し、プロジェクト ディレクトリに入り、php bin/consoleserve を実行し、http://localhost:8000 にアクセスしてようこそページを表示する必要があります。

thinkphp にはいくつかのバージョンがあります thinkphp にはいくつかのバージョンがあります Apr 09, 2024 pm 06:09 PM

ThinkPHP には、さまざまな PHP バージョン向けに設計された複数のバージョンがあります。メジャー バージョンには 3.2、5.0、5.1、および 6.0 が含まれますが、マイナー バージョンはバグを修正し、新機能を提供するために使用されます。最新の安定バージョンは ThinkPHP 6.0.16 です。バージョンを選択するときは、PHP バージョン、機能要件、コミュニティ サポートを考慮してください。最高のパフォーマンスとサポートを得るには、最新の安定バージョンを使用することをお勧めします。

thinkphpの実行方法 thinkphpの実行方法 Apr 09, 2024 pm 05:39 PM

ThinkPHP フレームワークをローカルで実行する手順: ThinkPHP フレームワークをローカル ディレクトリにダウンロードして解凍します。 ThinkPHP ルート ディレクトリを指す仮想ホスト (オプション) を作成します。データベース接続パラメータを構成します。 Webサーバーを起動します。 ThinkPHP アプリケーションを初期化します。 ThinkPHP アプリケーションの URL にアクセスして実行します。

laravelとthinkphpではどちらが優れていますか? laravelとthinkphpではどちらが優れていますか? Apr 09, 2024 pm 03:18 PM

Laravel フレームワークと ThinkPHP フレームワークのパフォーマンスの比較: ThinkPHP は、最適化とキャッシュに重点を置いて、一般に Laravel よりもパフォーマンスが優れています。 Laravel は優れたパフォーマンスを発揮しますが、複雑なアプリケーションの場合は、ThinkPHP の方が適している可能性があります。

開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法 Nov 22, 2023 pm 12:01 PM

「開発に関する提案: ThinkPHP フレームワークを使用して非同期タスクを実装する方法」 インターネット技術の急速な発展に伴い、Web アプリケーションには、多数の同時リクエストと複雑なビジネス ロジックを処理するための要件が​​ますます高まっています。システムのパフォーマンスとユーザー エクスペリエンスを向上させるために、開発者は多くの場合、電子メールの送信、ファイルのアップロードの処理、レポートの生成など、時間のかかる操作を実行するために非同期タスクの使用を検討します。 PHP の分野では、人気のある開発フレームワークとして ThinkPHP フレームワークが、非同期タスクを実装するための便利な方法をいくつか提供しています。

thinkphpのインストール方法 thinkphpのインストール方法 Apr 09, 2024 pm 05:42 PM

ThinkPHP のインストール手順: PHP、Composer、および MySQL 環境を準備します。 Composer を使用してプロジェクトを作成します。 ThinkPHP フレームワークと依存関係をインストールします。データベース接続を構成します。アプリケーションコードを生成します。アプリケーションを起動し、http://localhost:8000 にアクセスします。

thinkphpのパフォーマンスはどうですか? thinkphpのパフォーマンスはどうですか? Apr 09, 2024 pm 05:24 PM

ThinkPHP は、キャッシュ メカニズム、コードの最適化、並列処理、データベースの最適化などの利点を備えた高性能 PHP フレームワークです。公式パフォーマンステストでは、1秒あたり10,000以上のリクエストを処理できることが示されており、実際のアプリケーションではJD.comやCtripなどの大規模なWebサイトやエンタープライズシステムで広く使用されています。

ファイル転送機能を実現するThinkPHP6とSwooleをベースとしたRPCサービス ファイル転送機能を実現するThinkPHP6とSwooleをベースとしたRPCサービス Oct 12, 2023 pm 12:06 PM

ThinkPHP6 と Swoole をベースとした RPC サービスがファイル転送機能を実装 はじめに: インターネットの発展に伴い、ファイル転送は私たちの日常業務においてますます重要になってきています。この記事では、ファイル転送の効率化とセキュリティを向上させるために、ThinkPHP6とSwooleをベースとしたファイル転送機能を実現するRPCサービスの具体的な実装方法を紹介します。 WebフレームワークとしてThinkPHP6を使用し、SwooleのRPC機能を利用してサーバー間のファイル転送を実現します。 1. 環境基準

See all articles