0

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

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

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

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

提前致谢。

4

4 回答 4

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()

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

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

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

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

于 2012-09-28T03:30:21.803 回答
1
<?php
session_start();

//all of the php code goes here

header("location: samepage.php")

?>

确保您的所有 php 代码都位于浏览器的顶层并且不使用任何 echo 命令 - 否则您最终会在页面顶部显示 echo 的内容 - 而不是使用 echo 命令使用更可靠的变量必要时在 html 正文中使用变量。

于 2012-09-28T03:42:39.910 回答
0

这是做你想做的吗?

<?php
session_start();

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

// Display login form
于 2012-09-28T04:30:41.023 回答
-1

你可以试试这个

JAVASCRIPT

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

HTML

 <!--The page will refresh every 5 seconds.-->   
 <body onload="timedRefresh(5000)">
于 2012-09-28T03:42:59.723 回答