6

我试图在成功执行后重定向页面。但是,我想在重定向完成时向用户显示一条消息(例如“已更改。重定向...”)。在页面输出后更改header变量会导致 PHP 出错,我知道这一点。我的问题是,我该怎么做?

我当前的代码类似于

// ... execution code
echo 'Changes made successfully. Now redirecting...';
header('Location: index.php');

这不起作用。我还看到了关于 SO 的答案,建议我分别在页面的开头和结尾使用ob_start()和。ob_flush()但这也没有解决我的问题,我仍然得到错误。

注意我只需要使用 PHP,我不需要 JavaScript 进行重定向。

编辑:我最终使用 JavaScript 进行重定向,因为我需要在重定向之前向用户输出一些有用的消息,而单独的 PHP 并不是最好的解决方案。

4

4 回答 4

2

首先,你不能在 echo 或任何输出之后使用“header”。第二,为什么你需要 php 呢?您可以使用 javascript 或最好的,只需将其放入 html 中,就像这里所说的那样

于 2013-04-23T18:42:49.900 回答
2

设置标题后回显。

header("refresh:1;url=test.php"); 
echo 'this is a test';
exit;
于 2016-04-11T04:35:47.257 回答
0

所有三种流行方法重定向的缺点

 header('Location:$url'); 
 echo "<meta http-equiv='refresh' content='3;$url>";
 echo "<body onload='window.location=$url'>";

是您需要在页面的任何部分显示给用户之前决定可能的重定向。当决策过程很耗时时,用户会在空白页上呆住。我将延迟重定向与 Javascript OnLoad 事件一起使用,该事件在页面顶部声明,但仅当 id='Redirect' 的隐藏对象稍后在 HTML 正文中的任何位置回显时,它才会执行实际重定向。

echo "<html><body onload='if (typeof(Redirect)!=undefined) 
setTimeout(function()
    {window.location=document.getElementById(\"Redirect\").value},3000);'>";
echo $HtmlBody; echo $FormToFill;flush();
if (CheckReceivedDataFailed()) echo "Wrong data, please fill the form again";
else echo "<input type='hidden' id='Redirect' value='$url'>
           Thanks, youll be redirected in 3 sec";
echo "</body></html>";
于 2014-05-16T23:18:41.973 回答
0
header( "refresh:5;url=wherever.php" );

您可以在 5 秒后将页面重定向到 where.php。请看这个问题:Page redirect after some time PHP

于 2013-04-21T13:39:12.947 回答