好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP设计聊天室步步通(三) - 综合实例

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设计聊天室步步通(三) - 综合实例的详细内容...

  阅读:48次