1
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() 结果一样。)

阿帕奇 2.4.4 PHP 5.5.1

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

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

2 回答 2

0

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

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

关于 isset() 和字符串检查的组合,你拥有它的方式是最佳实践。如果您不检查正在设置的变量,通常会在 PHP 5 中收到警告。我会留下你目前对该行的看法。

于 2013-08-03T17:39:13.760 回答
0

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

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

还要记住,在输出数据后调用 header() 函数会导致“headers already sent” php 错误。所以先调用 header()

于 2013-08-03T17:33:32.927 回答