wake-up-neo.com

Was ist der Unterschied zwischen $ _SERVER ['REQUEST_URI'] und $ _GET ['q']?

was ist der Unterschied zwischen $_SERVER['REQUEST_URI'] und $_GET['q'] (was wird in Drupal verwendet)?

26
user550265

In Anbetracht dieser Beispiel-URL:

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

$_SERVER['REQUEST_URI'] werde dir geben:

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

Wohingegen $_GET['q'] werde dir geben:

bogus

Mit anderen Worten, $_SERVER['REQUEST_URI'] enthält den vollständigen Anforderungspfad einschließlich Querystring . Und $_GET['q'] gibt den Wert des Parameters q im Querystring an.

125
Decent Dabbler

Im Kontext von Drupal hängt der Unterschied davon ab, ob saubere URLs aktiviert sind oder nicht.

Wenn sie deaktiviert sind, hat $_SERVER['REQUEST_URI'] Den vollständigen Pfad der Seite mit dem Namen w//index.php, Während $_GET["q"] Nur das hat, was q zugewiesen ist.

Wenn sie aktiviert sind, sind sie ohne andere Argumente nahezu identisch, aber $_GET["q"] Wird der führende / Fehlen. Werfen Sie einen Blick auf das Ende der Standardeinstellung .htaccess, um zu sehen, was gerade passiert. Sie unterscheiden sich auch, wenn zusätzliche Argumente an die Seite übergeben werden, z. B. wenn ein Pager aktiv ist.

13
mpdonadio

Das PHP Handbuch erklärt beide recht gut:

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

http://php.net/manual/en/reserved.variables.get.php # für die Variable $ _GET ["q"]

11
mario