ホームページ >バックエンド開発 >PHPチュートリアル >PHP アプリケーションにおける PHP_SELF、PATH_INFO、SCRIPT_NAME、および REQUEST_URI の違いと使用例は何ですか?

PHP アプリケーションにおける PHP_SELF、PATH_INFO、SCRIPT_NAME、および REQUEST_URI の違いと使用例は何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-03 06:35:02600ブラウズ

What are the differences and use cases of PHP_SELF, PATH_INFO, SCRIPT_NAME, and REQUEST_URI in a PHP application?

PHP_SELF vs PATH_INFO vs SCRIPT_NAME vs REQUEST_URI

はじめに

PHP アプリケーションを構築する場合、これは、PHP_SELF、PATH_INFO、SCRIPT_NAME、REQUEST_URI などのさまざまなスーパーグローバル変数の違いを理解するために不可欠です。これらの変数は、現在のスクリプトとリクエストに関する情報を提供し、アプリの URI 構造を効果的にナビゲートするのに役立ちます。

PHP_SELF について:

PHP_SELF は、現在のスクリプトのパスを返します。クエリ文字列。ただし、mod_rewrite が使用されている場合、常にパス全体が含まれるわけではないため、誤解を招く結果が生じる可能性があります。

PATH_INFO の検査:

PATH_INFO には、次の部分が含まれています。スクリプト名の後の URI。この変数は、実際のスクリプトをパス引数から分離したい場合に特に便利で、書き換えルールでの使用に最適です。

SCRIPT_NAME の詳細:

SCRIPT_NAMEクエリ文字列を除いた、現在のスクリプトへの完全なパスを提供します。これは、実行されるアクションまたはコントローラーを決定するために PATH_INFO と組み合わせてよく使用されます。

REQUEST_URI の分析:

REQUEST_URI には、現在のスクリプトのパスとクエリ文字列パラメーターが含まれます。 。通常、これはこれらの変数の中で最も完全なものですが、書き換えルールとサーバー構成の影響を受ける可能性があります。

変数の違いの実際的な例:

一部のシナリオでは、次の例に示すように、これらの変数は異なる動作をします:

  • リクエストされた URL にパスベースの拡張子 (/test.php/foo/bar など) が含まれる場合、PHP_SELF は SCRIPT_NAME とは異なります。
  • REQUEST_URI は、空ではないクエリ文字列が存在する場合 (/test.php?foo=bar など)、SCRIPT_NAME と異なります。
  • REQUEST_URI と SCRIPT_NAME は、サーバー側のリダイレクトが有効な場合、異なります。 /test.php は、Apache の mod_rewrite を使用して /test2.php にマップされる場合があります。
  • REQUEST_URI は、HTTP エラーを処理するときの SCRIPT_NAME とは異なります。カスタム エラー ページが提供される場合があるため、REQUEST_URI でフル パスが使用可能になりますが、 SCRIPT_NAME にはありません。

正しい変数の選択:

特定のシナリオに最適な選択は、必要な機能によって異なります。クエリ文字列を含む完全な URI が重要な場合は、REQUEST_URI が適切なオプションです。クエリ文字列を含まないスクリプトのパスのみが必要な場合は、SCRIPT_NAME で十分です。スクリプトからパス引数を分離したい場合は、PATH_INFO が最適です。 PHP_SELF が要件を満たすことができる場合は、より簡単な代替手段が提供されます。これらの変数とそのニュアンスを理解することで、アプリケーションの URL 構造を効果的にナビゲートし、シームレスなユーザー エクスペリエンスを提供できます。

以上がPHP アプリケーションにおける PHP_SELF、PATH_INFO、SCRIPT_NAME、および REQUEST_URI の違いと使用例は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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