в чем разница между $ _SERVER и $ _GET ?

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

Учитывая этот пример, 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 в строке запроса.

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

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

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

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

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

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