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



这似乎应该很简单,但我遇到了一点麻烦。

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

我尝试使用从 PHP 回显的 JavaScript 来处理重定向,但它看起来很草率并且需要一点时间,所以我改用 header("location: abc.php")。将其用于索引页的问题在于它在发送输出后不起作用。我也尝试使用元标记来刷新页面,但这并非在所有浏览器中都有效。

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

提前谢谢。

您可以使用

其中任何一个。但是,发送响应后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()

请查看官方文档以获取更多信息

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

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

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

<?php
session_start();
//all of the php code goes here
header("location: samepage.php")
?>

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

这能做到你想要的吗?

<?php
session_start();
if ($_SESSION['logged_in']) {
  header("Location: mainpage.php");
  exit();
}
// Display login form

你可以试试这个

JAVASCRIPT

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

.HTML

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

相关内容

最新更新