web-dev-qa-db-fra.com

quelle est la différence entre $ _SERVER ['REQUEST_URI'] et $ _GET ['q']?

quelle est la différence entre $_SERVER['REQUEST_URI'] et $_GET['q'] (qui est utilisé dans Drupal)?

26
user550265

Étant donné cet exemple d'URL:

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

$_SERVER['REQUEST_URI'] te donnera:

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

Tandis que $_GET['q'] te donnera:

bogus

En d'autres termes, $_SERVER['REQUEST_URI'] contiendra le chemin de demande complet, y compris chaîne de requête . Et $_GET['q'] vous donnera la valeur du paramètre q dans la chaîne de requête.

125
Decent Dabbler

Dans le contexte de Drupal, la différence dépendra de l'activation ou non des URL propres.

Sans eux, $_SERVER['REQUEST_URI'] aura le chemin complet de la page comme appelé w//index.php, tandis que $_GET["q"] aura juste ce qui est assigné à q.

Avec eux, ils seront presque identiques sans autres arguments, mais $_GET["q"] manquera le premier /. Jetez un œil vers la fin du fichier .htaccess par défaut pour voir ce qui se passe. Ils différeront également si des arguments supplémentaires sont passés dans la page, par exemple lorsqu'un pager est actif.

13
mpdonadio

Le manuel PHP explique les deux assez bien:

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

http://php.net/manual/en/reserved.variables.get.php # pour la variable $ _GET ["q"]

11
mario