$ _SERVER ['REQUEST_URI']错误的值

时间:2010-11-19 04:29:55

标签: php url

我正在使用此变量来获取当前页面网址,如下所示:

  $request = $_SERVER["REQUEST_URI"];

  $page = (is_ssl() ? 'https' : 'http').'://';
  if ($_SERVER["SERVER_PORT"] != "80")
    $page .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$request;
  else $page .= $_SERVER["SERVER_NAME"].$request;

该应用。我这样做是公开的,问题是在某些网站上(非常罕见)这个变量返回整个URL,包括域名,而不仅仅是请求的页面。这是服务器配置错误吗?

1 个答案:

答案 0 :(得分:2)

可能是您的代码(或第三方软件包)中某处正在更改此变量。

你可以grep

grep -r -E '\$_SERVER\[[\'"]?REQUEST_URI[\'"]?\]\s?=[^=]+?'

例如,正则表达式应该找到分配$_SERVER['REQUEST_URI]的位置,而不仅仅是正常使用或测试相等性。另请注意,我删除了-i标记,因为PHP variables are case sensitiveso are array keys