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>
-
- <?
-
- print("<input type='hidden' name='name' value='$name'>n");
- print("<input type='hidden' name='pass' value='$pass'>n");
- ?>
-
- <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;
- }
-
-
- 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);
- }