PHP加载page1,睡5秒,加载第2页

时间:2016-02-19 19:08:00

标签: php include

我需要做一些理论上听起来很容易的事情,但我遇到了很多问题才能正确完成。

添加了一层复杂性,因为我正在运行自定义欺诈检测脚本,但这不会对此产生任何影响。

基本上,我需要我的PHP代码来执行以下操作

-Load Page 1(通过Include()使URL不会改变) - 显示该页面5秒钟 -Stop显示第1页,而是显示第2页(再次使用Include()使URl保持不变)

有什么想法吗?

最近我得到的是:

<?php
ob_start();
include ("1b.html");
ob_clean();
sleep(5);
include ("1c.html");

 ?>

但它只显示5秒钟,就好像页面仍在加载,然后只显示1c而没有显示1b持续5秒。

2 个答案:

答案 0 :(得分:1)

这是不可能的。这完全不是PHP的工作原理。您无法向用户发送大量数据,然后编辑并向客户端发送新的数据。输出缓冲不能以这种方式使用。

  

但它只显示5秒钟,就像页面仍在加载一样,

那是因为页面仍在加载。您正处于HTTP请求的中间,并且您告诉PHP sleep 5秒钟。

要完成这项工作,您需要将两个部分发送到客户端,并在JavaScript中 ,以编程方式隐藏第一部分并在5秒后显示第二部分

将第一部分发送给用户,并(通过元刷新或JavaScript)在5秒后重新加载页面并使用某些信号(例如查询字符串参数)来处理会话状态第二页内容给用户。

答案 1 :(得分:0)

它对我有用:

<?php
if(session_status() == PHP_SESSION_NONE) session_start();

if(!isset($_SESSION['loaded'])) {
    $_SESSION['loaded'] = 0;
}

if($_SESSION['loaded'] == 0) {
    include('page1.php');
}
elseif($_SESSION['loaded'] == 1) {
    include('page2.php');
}
elseif($_SESSION['loaded'] == 2) {
    include('page3.php');
}
else {
    $_SESSION['loaded'] = 0;
    die(header("Refresh:0"));
}

if(isset($_SESSION['loaded'])) {
    $_SESSION['loaded']++;
    die(header("Refresh:5"));
}

- 编辑仅限一次:

<?php
if(session_status() == PHP_SESSION_NONE) session_start();

if(!isset($_SESSION['loaded'])) {
    $_SESSION['loaded'] = 0;
}

if($_SESSION['loaded'] == 0) {
    include('page1.php');
    $_SESSION['loaded']++;
    die(header("Refresh:5"));
}
elseif($_SESSION['loaded'] == 1) {
    include('page2.php');
}

希望我帮助过:)