PHP设计聊天室步步通(三)
4、删除一个用户
function del(str) { for ( var i=0;i<list.length;i=i+1) if (list[i]==str) { delete list[i]; count --; } }5、增加一个用户
function add(str1,str2) { var l=list.length; for ( var i=0;i<list.length;i=i+1) //如果已经在数组里面则返回 if (list[i]==str1) return ; //增加一个用户 list[l]=str1; count ++; }6、更新聊天人数的方法,定时器的使用
var timerID=null; var timerRunning=false; function stop() { //停止 if (timerRunning)clearTimeout(timerID); timerRunning=false; } function start() { stop(); //调用更新在线人数的程序 write1(); } function write1() { ... ... ... ... //设定更新时间, timerID=setTimeout( "start()" ,30000); timerRunning=true; }这种方法比较简单的实现了在线人数的显示,当然也可以使用读入在线人文件的方法显示在线人数,不过在改变聊天对象是会比较麻烦.
显示:现在的www聊天室基本全部采用框架方式,可以用frame也可以用iframe看个人喜欢了,我的采用frame的传统方式
print( "<frameset rows=" *,110,0,0,0 " border=0>n" ); print( "<frameset cols=" 660,118 " rows=" * ">n" ); //主显示屏幕,负责显示聊天内容 print( "<frame name=u src=about:blank frameborder=" NO " noresize>n" ); //在线人数屏幕 print( "<frame name=r src=" about:blank " frameborder=" NO ">" ); print( "</frameset>n" ); //发送信息的屏幕,信息指挥中心,所有指令都要由这里发出 print("<frame name=d src=send.php?name= $name &&pass= $pass scrolling='no ' frameborder= "NO" noresize>n"); //被动更新屏幕,处理发送的信息 print( "<frame src=" about:blank " name=" bl ">n" ); /主动更新屏幕,显示自己和其他聊友的聊天信息 print( "<frame src=" about:blank " name=" flush ">n" ); //检测是否在线的屏幕,对于异常离开,如死机,掉线等的处理 print( "<frame src=" about:blank " name=" check ">n" ); print( "</frameset>n" );因为各个页面之间的程序有联系,所以显示顺序很重要,可以看到,我这里只有发送页面不是about:blank,其他页面的显示都要先通过发送页面的调用才能开始.
指挥中心
这里是聊天室的指挥中心,所有的指令都要在这里发出
1、下面是基本的发送表单代码
<form name=inputform action= 'messagesend.php' target= 'bl' onsubmit= 'return(checksay());' method=POST> <? //下面的2个参数用于验证信息的正确性 print( "<input type='hidden' name='name' value='$name'>n" ); print( "<input type='hidden' name='pass' value='$pass'>n" ); ?> //聊天对象,注意加上 readonly 属性 <input type= "text" name= "talkto" size= "10" maxlength= "20" readonly value= "所有人" > //上次聊天的发送内容 <input type= 'hidden' name= 'message' value= '' > //发送的表单文本框 <input type= "text" name= "msg" maxlength= "120" size= "34" > <input type= "submit" name= "Submit" value= "发送" > </form>2 检查发送内容的js
var dx = '' ; function checksay( ) { //不允许发送空的发言 if (document.inputform.msg.value== '' ) { document.inputform.msg.focus(); return false ; } //不允许重复发言,内容相同,对象相同 if ((document.inputform.msg.value==document.inputform.message.value) &&(document.inputform.talkto.value==dx)) { alert( '发言不能重复' ); document.inputform.msg.focus(); return false ; } //两次发言内容的间隔不能小于1秒,或者发言字数大于间隔*3 t2=( new Date()).getTime()/1000; if (((t2-t1)<1)||((t2-t1)*3<document.inputform.msg.value.length)) { document.inputform.msg.focus(); return false ; } //更新时间 t1=t2; document.inputform.showsign.value=1; //保存上次发言内容 document.inputform.message.value =document.inputform.msg.value; //清空发言内容 document.inputform.msg.value = '' ; //保存发言对象 dx=document.inputform.talkto.value; //定位焦点 document.inputform.msg.focus(); //返回 return ( true ); }查看更多关于PHP设计聊天室步步通(三) - 综合实例的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did3840