使用PHP刷新页面的好方法是什么?

时间:2012-09-28 03:24:27

标签: php javascript redirect header meta

这看起来应该很简单,但我遇到了一些麻烦。

我有一个索引页面,它既是登录页面又是主要内容页面,具体取决于是否设置了会话变量。

我尝试过使用JavaScript来回应PHP以处理重定向,但它看起来很草率并需要一点时间,所以我切换到使用标题(“location:abc.php”)。将其用于索引页面的问题在于它在发送输出后不起作用。我也尝试使用元标记来刷新页面,但这并不适用于所有浏览器。

处理这种情况的最佳方法是什么?

提前致谢。

4 个答案:

答案 0 :(得分:1)

您可以使用其中任何一种。但是,header("location: abc.php")在发送回复后无效!解决方法很简单。使用输出缓冲。

<?php
ob_start()

//here goes many lines of your wonderful php code blocks

//now send the header based on your logic
header("location: abc.php")

ob_end_flush()

请查看official docs了解详情

更新: 您可以考虑@zerkms的建议。如果您确实需要静默重定向到其他页面,请在使用header()函数发送任何输出之前执行此操作。但是,如果您想表明您正在重定向他/她,您可以使用javascript,因为您正在使用!对于后者,您还可以使用Meta Refresh

<meta http-equiv="refresh" content="5;URL='http://example.com/'">

ob_start()对此有所帮助。因为,您可能会在页面上显示许多内容,然后告诉他/她将被暂时重定向。以上示例将在5秒内将用户重定向到example.com。

答案 1 :(得分:1)

<?php
session_start();

//all of the php code goes here

header("location: samepage.php")

?>

确保你的所有php代码都在浏览器的顶级而不使用任何echo命令 - 否则你最终会在页面顶部显示一些echo - 而不是使用echo命令使用变量更可靠,然后在必要时在html体中使用变量。

答案 2 :(得分:0)

这样做你想要的吗?

<?php
session_start();

if ($_SESSION['logged_in']) {
  header("Location: mainpage.php");
  exit();
}

// Display login form

答案 3 :(得分:-1)

你可以试试这个

<强> JAVASCRIPT

function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
 }

<强> HTML

 <!--The page will refresh every 5 seconds.-->   
 <body onload="timedRefresh(5000)">