我需要做一些理论上听起来很容易的事情,但我遇到了很多问题才能正确完成。
添加了一层复杂性,因为我正在运行自定义欺诈检测脚本,但这不会对此产生任何影响。
基本上,我需要我的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秒。
答案 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');
}
希望我帮助过:)