使用 php header("Refresh") 重定向时的延迟 [重复]
Posted
技术标签:
【中文标题】使用 php header("Refresh") 重定向时的延迟 [重复]【英文标题】:delay when redirecting with php header("Refresh") [duplicate] 【发布时间】:2012-12-20 17:24:49 【问题描述】:可能重复:Why I have to call ‘exit’ after redirection through header(‘Location..’) in php?
为了在不登录的情况下无法访问mainpage.php,我使用以下代码启动mainpage.php:
<?php
session_start();
if(!isset($_SESSION['name']))
header("Refresh: 0; url=hauptseite_slim.php");
?>
<!DOCTYPE html>
...
这正是我想要的,但是,问题是,它非常丑陋,因为有一会儿,主页出现了。我怎样才能避免这种影响?
【问题讨论】:
通过不输出页面。通常建议使用exit(header(..));
。 Location:
可能是更好的选择。
只是一个注意......这个: if(!isset($_SESSION['name'])) 不应该用于检查用户是否登录。会话可能很容易劫持。每次页面加载时都应重新验证用户。
ebay、facebook 和 google 等网站如何让用户保持登录状态?
通过在每次页面加载时重新生成会话ID,调用会话值、数据库值和浏览器cookie,通过验证方法/函数运行它们,并返回值。
header("location:page.php"); exit;
- 退出会停止加载任何其他代码。
【参考方案1】:
你为什么不使用header("location: hauptseite_slim.php");
?
这是我认为最好的做法:
header("location: hauptseite_slim.php");
exit;
【讨论】:
不会妨碍上述页面输出。此外,答案应该不仅仅是one-liner。如果它以问号结尾,则可能不是偶数。 因为我一般都是用这个代码扔到一页,没有用过你上面用的技术,还没有比较过。但是是的,我同意其他的 cmets,它应该在之后添加 exit 以确保代码将在之后停止。将编辑我的答案【参考方案2】:如果不希望发送if语句后的html,直接返回即可。
if(!isset($_SESSION['name']))
header("Refresh: 0; url=hauptseite_slim.php");
return;
【讨论】:
以上是关于使用 php header("Refresh") 重定向时的延迟 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 PHP Header("Location: ") 函数重定向
使用 php header("Refresh") 重定向时的延迟 [重复]