社区
基础编程
帖子详情
PHP怎样实现网页的无刷新更新,就像有些聊天室中的话语显示窗口,最好有相关代码!(内空)
blstar
2001-02-16 06:58:00
...全文
945
4
打赏
收藏
PHP怎样实现网页的无刷新更新,就像有些聊天室中的话语显示窗口,最好有相关代码!(内空)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blstar
2001-02-16
打赏
举报
回复
先把分加上.
to:soff(soff)
謝謝!小弟愚笨,能不能麻烦再详细一些.
to:diychen.
先Ctrl+c下来慢慢研究.thanks!
soff
2001-02-16
打赏
举报
回复
牛啊,佩服佩服
diychen
2001-02-16
打赏
举报
回复
聊天的内容如何显示在屏幕上,一种是每隔一段时间刷新一次页面,读入全部聊天内容,然后显示,这里采用的是js的document.write的方法实现不刷新的聊天页面!
1 主页面的生成,规定了CSS类型,显示欢迎词
function write2(){
if(this.u.document==null)return;
this.u.document.writeln("<html><head>");
this.u.document.writeln("<meta http-equiv=Content-Type content=text/html; charset=gb2312>");
this.u.document.writeln("<style type=text/css>");
this.u.document.writeln(".p9 { font-size: 11pt; line-height: 15pt}");
this.u.document.writeln("body { font-size: 11pt; line-height: 15pt}");
this.u.document.writeln("a:visited { font-size: 11pt;color: #0000FF; text-decoration: none;}");
this.u.document.writeln("a:link { font-size: 11pt;color: #0000FF; text-decoration: none}");
this.u.document.writeln("a:hover { font-size: 11pt;color: #FF0000}");
this.u.document.writeln("</style>");
this.u.document.writeln("</head>");
this.u.document.writeln("<body);
//.................. 这里插入生成在线人数组的程序段
this.u.document.writeln("<script>");
this.u.document.writeln("<p class=p9 align=left>");
this.u.document.writeln("<p align=center>欢迎光临PlayBoy聊天室,本聊天室正在测试阶段,如有问题请与<a href=mailto:pccastle@sina.com>我们联系</a></p>");
}
2 初始化进入信息,第一次进入聊天室
if($action == "enter")
{
/////////////////// 调用显示主屏幕的js程序 ////////////////////
print("parent.write2();\n");
//发言内容,某某进入聊天室了
$message = "<a href=javascript:parent.cs('$name'); target=d>$name</a>来到聊天室".$message." ".date("m月d日 H:i")."<script>parent.add('$name','$photo');parent.write1();<\/script><br>";
}
//更新发言内容
while(file_exists($lockfile)){ $pppp++; }
//发言的锁定
fclose(fopen($lockfile,"w"));
//读入发言的总句数,也就是所有人一共发了多少言!我们可以保存每一个发言,但是这样会占用大量的磁盘空间,我们采用了一种取模的方法,循环使用文件来减少文件操作!
$talkmessage = file($filename);
$number = chop($talkmessage[0]);
//发言数增加一,然后保存
$talkhandle = fopen($filename,"w");
$number++;
fputs($talkhandle,$number);
fclose($talkhandle);
/去掉锁定
unlink($lockfile);
//对发言总数对10取模,作为文件名保存发言内容,也就是说第11句和第1句使用同一个文件名,由于不可能同时有10句话没有更新,所以这是数在人不是非常多的情况下很好!当然,考虑到人多的情况,可以设成100.
$filehandle = fopen("messageonline".($number%10).".php","w");
fputs($filehandle,$message);
fclose($filehandle);
//显示进入信息
print("parent.u.document.writeln(\"$message\");\n");
//调用主动刷新js程序,传递已经显示的发言数目
print("parent.flushwin($number)\n");
//保存最后一次显示的发言
$last = $number;
}
3 处理发送表单的请求
//不处理空的发言和超过一定数目的发言
if( ($message != "")&&(strlen($message)<150))
{
//检查发言者是否在线,防止意外
$onlineperson = file("useronline.dbf");
$personsign=0;
for($i=0;$i<count($onlineperson);$i++)
{
$person = split($split,$onlineperson[$i],99);
if($person[0] == $name)
{
$personsign = 1;
$person[3] = date("U");
break;
}
}
//在线时的处理程序
if($personsign == 1)
{
//添加发言时间的部分
$message = $message." <font size=1>".date("m月d日 H:i")."</font><br>";
//锁定发言总数文件
while(file_exists($lockfile)){ $pppp++; }
fclose(fopen($lockfile,"w"));
//读入发言总数
$talkmessage = file($filename);
$number = chop($talkmessage[0]);
//总数加1,然后保存
$talkhandle = fopen($filename,"w");
$number++;
fputs($talkhandle,$number);
fclose($talkhandle);
unlink($lockfile);
//总数对10取模后以文件形式保存发言内容
$filehandle = fopen("messageonline".($number%10).".php","w");
fputs($filehandle,$message);
fclose($filehandle);
}
}
//////////////////////////////////////////////////////////////////
这样,表单的处理已经完成,下面的主动更新程序将会把新的发言内容显示在屏幕上
//////////////////////////////////////////////////////////////////
4 主动更新的自动循环调用方法
可以使用<meta http-equiv="reflesh" content="3;url=messageflush.php?name=<?print($name)?>&&pass=<?print($pass)&&last=<?print($last)?>的方式更新!
我的程序以前就是使用这种方法自动更新的,但是我发现一个问题,那就是当这个更新程序出现运行错误时,他不会产生调用下次更新的代码,造成后台更新程序停止工作!所以我采用了js定时的方法来完成同样的功能!
var flushtimeID=null;
var flushRunning=false;
//上次更新标志
var flushflag = true;
function flushstop()
{
if(flushtimerRunning)clearTimeout(flushtimerID);
flushtimerRunning=false;
}
function flushstart()
{
flushstop();
//使用发送表单里面的上次显示的值
flushwin(this.d.document.inputform.last.value);
}
function flushwin(winnumber)
{
//如果上次更新正确,则调用下次更新
if(flushflag == true)
{
url="messageflush.php?name=<? print($name); ?>&&pass=<? print($pass); ?>&&last="+winnumber;
flush.location=url
flushflag=false
}
//否则等待一个循环
flushtimerID=setTimeout("flushstart()",2000);
flushtimerRunning=true;
}
这种方法保证了在主程序不死的情况下,后台更新程序会一直运行下去!
5 主动更新程序
<script Language='JavaScript'>
<?
//读入最大的发言数目
$message = file($filename);
$number = chop($message[0]);
//从上次显示的下一个发言开始到最大发言结束,显示发言内容
for($i=$last+1;$i<=$number;$i++)
{
//读入下一个发言内容
$filename = "messageonline".($i%10).".php";
$message = file($filename);
$tempmessage = split($split,$message[0],99);
//显示发言内容
print("parent.u.document.writeln(\"$message[0]\");\r\n");
}
//更新发送表单最后一个发言的数目
print("parent.d.document.inputform.last.value=$number;\n");
//通知主程序本次更新已经完成
print("parent.flushflag=true;\n");
?>
</script>
这样,每个发送的发言,经过被动更新程序处理保存到文件内,然后由一个循环的主动更新程序完成显示任务!!!
soff
2001-02-16
打赏
举报
回复
建立一个空帧,进行刷新,判断时候有新数据,这样浏览者并看不出来有在刷新。
php
聊天室
的设计
实现
,基于
PHP
的Ajax
聊天室
系统的设计与
实现
本文介绍了基于Ajax技术和
PHP
语言的
聊天室
系统设计与
实现
。该系统通过Ajax技术
实现
实时消息
更新
,减少了资源和带宽消耗,提升了用户体验。
关于
php
聊天室
的
实现
方法,
PHP
聊天室
简单
实现
本文介绍了Web
聊天室
的工作原理和技术
实现
细节,包括使用HTTP协议下的ServerPush和ClientPull技术进行实时信息
更新
的方法,以及如何通过页框技术和文件操作提高用户体验。
详细介绍附
代码
:使用jquery,和
php
文件构建一个简单的在线
聊天室
,通过ip
显示
googlemap
本文介绍如何使用jQuery创建一个简易的
聊天室
,并通过AJAX
实现
动态
更新
内容,同时运用CSS美化界面。通过整合客户端与服务器端的功能,
实现
用户间实时聊天与地理位置
显示
,优化用户体验。
php
即时聊天数据库设计入门经典教程_
php
_D3_“简易
聊天室
”
实现
的关键技术 详解...
本文介绍如何使用
PHP
和MySQL创建一个简易的在线
聊天室
。系统功能包括用户登录、发言及展示信息等。关键技术涉及自动
刷新
页面、Session传递用户名及
显示
最新发言信息。
jquery ajax实时
刷新
例子,
php
+jQuery ajax
实现
的实时
刷新
显示
数据功能示例
本文详细介绍了如何使用
PHP
结合jQuery AJAX技术
实现
网页
数据的实时
更新
,包括创建数据表、服务器文件处理、数据库查询和数据传输,以及在
网页
上通过AJAX请求动态
显示
数据。适合
PHP
开发者学习AJAX和JSON编码的实战应用。
基础编程
21,889
社区成员
140,337
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章