了解 PHP 的 header()

2022-01-11 00:00:00 header php

你在哪里使用命令 header()?

我在 handlers/handle_login.php 中有以下代码.用户从 index.php 进入站点,这是起始位置.

I have the following code at handlers/handle_login.php. The user has gone to the site from index.php which is the starting place.

 if(!$logged_in){
     header("Location: index.php");                                                                          
     die("You are not logged_in");
 }

如果 if-clause 为真,我会收到 404 错误,因为标题将我转到 handlers/index.php,而不是 index.php.

If if-clause is true, I get a 404 error, since the header puts me to to handlers/index.php, instead of index.php.

推荐答案

虽然我同意尼拉莫和伯爵的观点,但我希望我能给出更大的图景:

While I agree with nilamo and earl, I hope I can give a bigger picture:

使用相对路径可能会产生非常奇怪的效果,具体取决于浏览器的位置认为"它在您的站点层次结构中.例如,假设站点有一个索引文件/index.php",但配置为接受 URI 路径中的模块和操作.您可能有一个如下所示的网址:

Using relative paths can have very strange effects depending on where the browser 'thinks' it is in your site hierarchy. For example, assume the site has an index file '/index.php' but is configured to accept module and action in the URI path. You may very well have a url that looks like:

http://www.yoursite.com/forms/contact/

从这种情况下,返回一个像这样的标题:

From this situation, returning a header like:

header("Location: index.php");

很可能会导致浏览器尝试请求

may very well cause the browser to try to request

http://www.yoursite.com/forms/contact/index.php

这显然不是你想要的.出于这个原因,通常最好使用上面推荐的/index.php",或者尽可能使用完全限定的 URL.

which is obviously not what you want. For this reason, it's generally better to use '/index.php' as recommended above, or even better use the fully qualified URL when possible.

希望这会有所帮助.

相关文章