【发布时间】:2011-06-11 11:24:38
【问题描述】:
$_SERVER['REQUEST_URI'] 和$_GET['q'](在 Drupal 中使用)有什么区别?
【问题讨论】:
-
嗯..他们是两个完全不同的东西?我认为您需要添加一些上下文
$_SERVER['REQUEST_URI'] 和$_GET['q'](在 Drupal 中使用)有什么区别?
【问题讨论】:
鉴于此示例网址:
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'] 将保存包括querystring 在内的完整请求路径。而$_GET['q'] 将在查询字符串中为您提供参数q 的值。
【讨论】:
$_GET['q'] 中,将实际路径(不是别名)存储在 Drupal 基本文件夹之后。它的功能与current_path() 相同,参见api.drupal.org/api/drupal/includes%21path.inc/function/… 在Drupal 8 中已删除。
在 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"] 变量
【讨论】: