PHP $ _SERVER [“REQUEST_URI”]返回“\”

时间:2014-08-21 15:49:39

标签: php relative-path filepath

所以我的php文件中有以下功能:

 function curPageURL() {
 $pageURL = 'http';
 if (isset($_SERVER["HTTPS"])) {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80" ) {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"]. dirname($_SERVER["REQUEST_URI"]).'/HPP_Receipt.php';
 } else{
 $pageURL .= $_SERVER["SERVER_NAME"].dirname($_SERVER["REQUEST_URI"]).'/HPP_Receipt.php';
  }

  return $pageURL;
 }

在大多数情况下,它似乎正常运作。例如在我的WAMP www文件夹中,如果我在另一个文件夹中有这个/ HPP_Receipt文件,它看起来像这样:

http://localhost/HPPCurrent/HPP_Receipt.php

这是正确的。但是,如果我将其切换回www文件夹,它会给我这个结果:

http://localhost\/HPP_Receipt.php

我怎样才能做到这一点它并没有给我" \"?我一直想弄明白,但我无法弄明白。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

dirname($_SERVER["REQUEST_URI"])

是罪魁祸首。此外,您在一台服务器上有子目录HPPCurrent而在另一台服务器上没有它。在Windows服务器目录路径上,大多使用\而不是/

您可以使用

删除\
rtrim(dirname($_SERVER["REQUEST_URI"],'\\')   // Will remove \ if present

注意:不要被\\弄糊涂,它仍然会移除单个,你会在那个表达式中看到两个,因为第一个是逃避第二个。