首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP加载page1,睡眠5秒,加载页面2

PHP加载page1,睡眠5秒,加载页面2
EN

Stack Overflow用户
提问于 2016-02-20 03:08:00
回答 2查看 334关注 0票数 0

我需要做一些理论上听起来非常简单的事情,但我已经遇到了很多问题来正确地完成它。

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

基本上,我需要我的PHP代码来完成以下工作

包含页面1(通过-Load ()以使URL不变)包含该页面5秒以显示页面1,而不是显示页面2(再次使用-Show ()以使URl保持不变)

有什么想法吗?

我得到的最接近的结果是:

代码语言:javascript
复制
<?php
ob_start();
include ("1b.html");
ob_clean();
sleep(5);
include ("1c.html");

 ?>

但它只在5秒内什么也不显示,就好像页面仍在加载一样,然后在5秒内只显示1c而不显示1b。

EN

回答 2

Stack Overflow用户

发布于 2016-02-20 03:21:29

这是不可能的。这根本不是PHP的工作方式。您不能将一大块数据发送给用户,然后对其进行编辑,然后再将新的数据块发送到客户端。输出缓冲不能以这种方式使用。

,但它只在5秒内不显示任何内容,就像页面仍在加载一样。

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

为此,您需要将两个部分都发送到客户端,并在JavaScript中发送,以编程方式隐藏第一部分,并在5秒后显示第二部分

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

票数 1
EN

Stack Overflow用户

发布于 2016-02-20 03:25:45

它对我来说很有效:

代码语言:javascript
复制
<?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"));
}

-编辑:只编辑一次:

代码语言:javascript
复制
<?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');
}

希望我能帮上忙:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35513068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档