繁体   English   中英

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

[英]What's a good way to refresh a page with PHP?

似乎应该足够简单,但我遇到了一些麻烦。

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

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

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

提前致谢。

您可以使用其中任何一个。 但是,发送响应后, 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内容-而不是使用echo命令use可靠的变量在必要时在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)">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM