was ist der Unterschied zwischen $_SERVER['REQUEST_URI']
und $_GET['q']
(was wird in Drupal verwendet)?
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.
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.
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"]