【问题标题】:delay when redirecting with php header("Refresh") [duplicate]使用 php header("Refresh") 重定向时的延迟 [重复]
【发布时间】: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; - 退出会停止加载任何其他代码。

标签: php html


【解决方案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;
    }

【讨论】:

    猜你喜欢
    • 2013-02-04
    • 2011-05-15
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2012-03-27
    相关资源
    最近更新 更多