用PHP+MySql编写聊天室
大家好!好久没有看到大家了,上次写了用PHP的通过文件操作的聊天室,当然是漏洞百出的,而且每一次刷新屏幕都很糟糕的!我想了好久,是不是能有一种方法不要刷新,就能取得发言的信息了?多用一个框架就能实现这个效果了,即多用一个框架我们称为getmsg,我们让getmeg去取得信息而且保证每一次取得的信息是最新的,就是上次取得的发言就不要了,上次我编的就是每一次取得信息都是重复的,这样效果不好。
我的设计思想是:每一次发言,都把它提交到服务器上,然后保存到一个数据库里,每格几秒钟getmsg就去服务器上取得 最新发言数据,并保证上次取得的发言就不要取下来了,然后把取下来的发言叠加到一个专门显示发言的窗口(listmsg)去。这样我们就感觉listmsg窗口不会有重刷新的感觉而且,只是看到发言信息不断加进去,这样就有很好的效果, 怎样在一个框架把信息加到另个框架去了?用JavaScript就可以实现这个想法的: <script language="JavaScript"> <!-- var win=parent.frames[0] //第一个框架即在文档中第一次出现的<frame> var doc=win.document //获取文档 doc.write("发言信息")//这样就可以把信息加到另个frame里去了! --> </script> 当然你得在mysql里建两个表,一个表用于保存发言信息,一个表用于保存几个在线的,在列在线人数时,我们让它每个60秒刷新一次,并把一分钟以前的发言删掉,并看某个发言人是不是很长时间没发言了,是的话,就删掉他, 由于表的子段很简单,在这里就不要写出来了,看程序就会知道了。这个程序在网上网下测试的效果都很好! 表的名字是:chat和chat_getmsg <!--主框架chat.php--> <?PHP if(!isset($username)) $username="guest"; $conid=mysql_connect("localhost","yourcounter","password"); mysql_select_db("yourdadabase",$conid); $dstr=date("YmdHis"); $sql="insert chat_getmsg (username,shijian) values ('$username','$dstr')"; mysql_query($sql,$conid); $sql="update chat_getmsg set shijian='$dstr' where username='$username'"; mysql_query($sql,$conid); mysql_close($conid); ?> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <frameset rows="283,105" frameborder="YES" border="1" framespacing="0" cols="*"> <frameset cols="520,113" frameborder="yes" border="1" framespacing="0" rows="*"> <frame name="topFrame" scrolling="auto" border="1" noresize src="list.html" > <frame name="rightFrame" scrolling="auto" border="1" noresize src="username.php"> </frameset> <frameset rows="17,90" frameborder="yes" border="1" framespacing="0" cols="*"> <?PHP echo "<frame name="topFrame1" scrolling="NO" border="1" noresize src="getmsg1.php?username=$username">n"; ?> <?PHP echo "<frame name="bottomFrame" scrolling="NO" border="1" noresize src="fayan.php?username=$username">n"; ?> </frameset> </frameset> <noframes><body bgcolor="#FFFFFF"> </body></noframes> </html> <!--发言fayan.php --> <?php if(!isset($username)) $username="guest"; if(!isset($yanse)) $yanse="blue"; if(!isset($objectname)) $objectname="大家"; ?> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> <!-- .normalfont { font-family: "宋体"; font-size: 10pt; font-weight: 800; color: #99FF33; height: auto; width: auto; left: 0px; top: 0px; clip: rect( )} --> </style> </head> <body bgcolor="#ff3333"> <form method="post" name="fayanform" action=<?PHP echo ""fayan.php?username=$username&yanse=$yanse&objectname=$objectname "";?> class="normalfont"> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="normalfont"> <tr> <td width="17%" height="22"> 颜色: 上一篇:如何开发一个虚拟域名系统 下一篇:一个简单的域名注册情况查询程序 更多相关文章
|
推荐文章
精彩文章
|