web-dev-qa-db-ja.com

$ _SERVER ['REQUEST_URI']と$ _GET ['q']の違いは何ですか?

違いは何ですか $_SERVER['REQUEST_URI']および$_GET['q'](Drupalで使用されます)?

26
user550265

このURLの例を考えると:

http://www.example.com/some-dir/yourpage.php?q=bogus&n=1

$_SERVER['REQUEST_URI']は以下を提供します:

/some-dir/yourpage.php?q=bogus&n=10

一方、$_GET['q']は以下を提供します:

bogus

言い換えると、 $_SERVER['REQUEST_URI']は、 querystring を含む完全なリクエストパスを保持します。そして、$_GET['q']は、クエリ文字列のパラメータqの値を提供します。

125
Decent Dabbler

Drupalのコンテキストでは、違いはクリーンURLがオンかどうかによって異なります。

それらをオフにすると、$_SERVER['REQUEST_URI']/index.phpと呼ばれるページの完全パスを持ち、$_GET["q"]qに割り当てられたものだけを持ちます。

これらをオンにすると、他の引数なしでほぼ​​同じになりますが、$_GET["q"]には先頭の/がありません。デフォルトの.htaccessの末尾を見て、何が起こっているのかを確認してください。また、ページャーがアクティブな場合など、追加の引数がページに渡される場合にも異なります。

13
mpdonadio

PHPマニュアルは両方を非常によく説明しています:

http://php.net/manual/en/reserved.variables.server.php #REQUEST_URI

http://php.net/manual/en/reserved.variables.get.php #$ _GET ["q"]変数の場合

11
mario