如果使用__DIR__,则标头不会重定向

时间:2013-09-03 16:51:40

标签: php

header ('Location:'.__DIR__.'/view/prijava_view.php'

如果我在index.php文件中使用上面的标题,它只显示一个带有“localhost”URL的空白页面。如果我使用include而不是标题,它可以工作。

这是 DIR 魔术常数的问题吗?看来你不能在标题中使用它,或者我的代码有问题吗?

2 个答案:

答案 0 :(得分:7)

__DIR__是文件系统路径。它与客户端浏览器将看到的URL无关。如果您的网站的文件实际存储在

/home/sites/example.com/html/view/projava_view.php

这个php脚本中的代码看着 DIR ,你会得到

/home/sites/example.com/html/view/

如果你通过header()传递出来进行重定向,你将被重定向到文件系统路径

header("Location: http://example.com/home/site/example.com/html/view/.....");

外部用户无法访问。该路径不在您的文档根目录中,浏览器实际上将请求完整路径,然后服务器将在文档根目录AGAIN上进行处理,因此完整的最终请求实际上是

/home/sites/example.com/html/view/home/sites/example.com/html/view/projava_view.php

通常,__DIR__魔术常量在尝试构建URL空间路径时完全没用,因为它不适用于URL。

答案 1 :(得分:0)

__DIR__魔法常量适用于php 5.3+。如果你的主机php版本不支持它,你应该使用dirname(__FILE__)代替