[英]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.