В чем разница между $ _SERVER ['REQUEST_URI'] и $ _GET ['q']? - PullRequest
26 голосов
/ 19 января 2011

В чем разница между $_SERVER['REQUEST_URI'] и $_GET['q'] (который используется в Drupal)?

Ответы [ 3 ]

123 голосов
/ 19 января 2011

В этом примере URL-адрес:

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

$_SERVER['REQUEST_URI'] даст вам:

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

Принимая во внимание, что $_GET['q']даст вам:

bogus

Другими словами, $_SERVER['REQUEST_URI'] будет содержать полный путь запроса, включая строку запроса $_GET['q'] даст вам значение параметра q в строке запроса.

13 голосов
/ 19 января 2011

В контексте Drupal разница будет зависеть от того, включены чистые URL-адреса или нет.

Если их отключить, $_SERVER['REQUEST_URI'] будет иметь полный путь к странице, называемый w / /index.php,в то время как $_GET["q"] будет просто иметь то, что назначено q.

При их включении они будут почти идентичны без других аргументов, но в $_GET["q"] будет отсутствовать ведущий /.Посмотрите на конец стандартного .htaccess, чтобы увидеть, что происходит.Они также будут отличаться, если на страницу будут переданы дополнительные аргументы, например, когда пейджер активен.

11 голосов
/ 19 января 2011

Руководство по PHP довольно хорошо объясняет и то и другое:

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

http://php.net/manual/en/reserved.variables.get.php # для переменной $ _GET ["q"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...