php ob_end_flush()不起作用

时间:2013-08-03 16:39:56

标签: php redirect

echo "First Login as a user.";
ob_end_flush();
flush();
usleep(5000000);
header("Location:index.php");

我想显示“首次登录为用户”。 5秒钟后我想重定向到index.php

我发现上面的代码,它应该工作。但是当我运行代码时,没有输出。浏览器标题栏显示“正在连接”,5秒后直接重定向到index.php

如何解决错误。还有其他方法吗? (试过sleep(),ob_flush()同样的结果。)

Apache 2.4.4 PHP 5.5.1

另一个疑问: 无论如何要把这两个陈述结合起来。

isset($_SESSION['user']) && $_SESSION['user']!="admin"

2 个答案:

答案 0 :(得分:0)

尝试使用Refresh标头而不是刷新数据:

header( "Refresh:5; url=index.php" );
echo "First Login as a user.";
// End Script

还要记住,输出数据后调用header()函数会导致“已发送标题”php错误.. SO调用header()首先

答案 1 :(得分:0)

在输出任何内容后,您应该无法更改标题。此外,在发送重定向之前依赖来自服务器的休眠不是一个好主意,因为用户可能会丢失连接或取消请求。此外,在浏览器等待连接完成时,页面在技术上暂停。

最好的解决方案是使用Refresh标头作为@ Wilson212提及。

关于isset()和字符串检查的组合,您拥有它的方式是最佳实践。如果您不检查所设置的变量,通常会在PHP 5中收到警告。我会留下你现在为那条线路如何拥有它。