当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用PHP+MySql编写聊天室

PHP
利用discuz实现PHP大文件上传应用实例代码
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
php在字符串中查找另一个字符串
php下HTTP Response中的Chunked编码实现方法
PHP实现定时生成HTML网站首页实例代码
PHP下一个非常全面获取图象信息的函数
PHP strtr() 函数使用说明
php 删除无限级目录与文件代码共享
php AJAX实例根据邮编自动完成地址信息
php miniBB中文乱码问题解决方法
cmd下运行php脚本
PHP 遍历XP文件夹下所有文件
php 移除数组重复元素的一点说明
discuz论坛 用户登录 后台程序代码
Optimizer与Debugger兼容性问题的解决方法
Zend Studio 无法启动的问题解决方法
php 页面执行时间计算代码
php smarty的预保留变量总结
php获取网页内容方法总结
php读取msn上的用户信息类

用PHP+MySql编写聊天室


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 257 ::
收藏到网摘: n/a

大家好!好久没有看到大家了,上次写了用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"> 颜色:
<select id=yanse name="yanse">
<option value="blue" <?PHP if($yanse=="blue") echo "SELECTED";?> >Blue
<option value="red" <?PHP if($yanse=="red") echo "SELECTED";?> >red
<option value="green" <?PHP if($yanse=="green") echo "SELECTED";?> >green
<option value="yellow" <?PHP if($yanse=="yellow") echo "SELECTED";?> >yellow
<option value="brown" <?PHP if($yanse=="brown") echo "SELECTED";?> >brown
<option value="#ff00ff" <?PHP if($yanse=="#ff00ff") echo "SELECTED";?> >ff00ff
<option value="#bb00ff" <?PHP if($yanse=="#bb00ff") echo "SELECTED";?> >bb00ff
<option value="#cc00ff" <?PHP if($yanse=="#cc00ff") echo "SELECTED";?> >cc00ff
<option value="#aa00ff" <?PHP if($yanse=="#aa00ff") echo "SELECTED";?> >aa00ff
<option value="#6600ff" <?PHP if($yanse=="#6600ff") echo "SELECTED";?> >6600ff
<option value="#7700ff" <?PHP if($yanse=="#7700ff") echo "SELECTED";?> >7700ff
<option value="#1100ff" <?PHP if($yanse=="#1100ff") echo "SELECTED";?> >1100ff
<option value="#11ffff" <?PHP if($yanse=="#11ffff") echo "SELECTED";?> >11ffff
<option value="#11aaff" <?PHP if($yanse=="#11aaff") echo "SELECTED";?> >11aaff
<option value="#1199ff" <?PHP if($yanse=="#1199ff") echo "SELECTED";?> >1199ff
<option value="#1133ff" <?PHP if($yanse=="#1133ff") echo "SELECTED";?> >1133ff
</select>
</td>
<td width="55%" height="22" class="normalfont">发言:
<input type="text" name="fayan" size=35 >
<input type="hidden" name="username" value=<?PHP echo ""$username""; ?> >
<input type="Button" name="Button" value="发言" onclick="submitfayan()">
</td>
<td width="28%" height="22"> </td>
</tr>
<tr>
<td width="17%" height="20">对象:
<input type="text" name="objectname" size=10 value=<?PHP echo ""$objectname"";?> >
</td>
<td width="55%" height="20" class="normalfont"><a href="http://chenlipan.oso.com.cn">回去</a> </td>
<td width="28%" height="20" class="normalfont" > </td>
</tr>
</table>
</form>
</body>
<Script language="JavaScript">
<!--
fayanform.fayan.focus()
function submitfayan()
{
if(fayanform.fayan.value!="")
fayanform.submit()
else
alert("不能发空信息")
fayanform.fayan.focus()
}
-->
</script>
</html>
<?PHP
if(isset($username)&&isset($fayan)){
$conid=mysql_connect("localhost","yourcount","yourpassword");
mysql_select_db("database",$conid);
$sql="insert chat (username,objectname,action,msg,color) values ("$username","$objectname","NO","$fayan","$yanse")";
mysql_query($sql,$conid);
mysql_close($conid);
}
?>
<!--获取发言信息getmsg.php-->
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<?PHP
$conid=mysql_pconnect("localhost","yourcount","password");
mysql_select_db("database",$conid);
if(!isset($username))
$username="getmsg";
$dt=time();
$newdate=date("YmdHis",$dt);
$fromdate=date("YmdHis",$dt-6);;
$sql="select username as name,msg,action,objectname ,shijian,color from chat where shijian>="$fromdate"";
$res=mysql_query($sql,$conid);
echo "<meta http-equiv="Refresh" content="6,url=getmsg.php?username=$username" >n";
echo "</head>n";
echo "<script language="JavaScript">n";
echo "<!--n";
echo "var win=parent.frames[0]n";
echo "var doc=win.documentn";
echo "var divlin=doc.body.all("lin")n";
while(list($name,$msg,$action,$objectname,$shijian,$color)=mysql_fetch_row($res))
{
if($objectname!="大家"||$objectname) $object="对 <a href=JavaScript:selectusername('$objectname')>$objectname</a> ";
echo "divlin.innerHTML=divlin.innerHTML+"<font color=$color size=3><a href=JavaScript:selectusername('$name')>$name</a> $object 说: $msg </font><br>"n";
}
echo "win.scrollBy(6000,6000)n";
echo "-->n";
echo "</script>n";
?>
<body bgcolor="#333333">
</body>
</html>
<!--欢迎词getmsg1.php -->
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<?PHP
if(!isset($username))
$username="guest";
echo "<meta http-equiv="Refresh" content="6;url=getmsg.php?username=$username" >n";
echo "</head>n";
echo "<script language="JavaScript">n";
echo "<!--hiden";
echo "var win=parent.frames[0]n";
echo "var doc=win.documentn";
echo "var divlin=doc.body.all("lin")n";
echo "divlin.innerHTML= "<font color=blue><b>欢迎 $username 的光临</b></font><br>"n";
echo "-->n";
echo "</script>n";
?>
<body bgcolor="#333333">
</body>
</html>
<!--显示发言list.html-->
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
.lin { font-size: 10pt; color: #FF6633}
-->
</style>
</head>
<body bgcolor="#FFFFFF" >
<center>
<div color=blue>
<font color=white size=6><b>
欢迎光临</b>
</marquee>
</div>
</center>
<div id=lin class="lin"></div>
</body>
<Script language="JavaScript">
<!--
function selectusername(str)
{
var win=parent.frames[3]
var doc=win.document
var form1=doc.body.all("fayanform")
form1.objectname.value=str
}
-->
</script>
</html>
<!--罗列在线人数-->
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Refresh" content="60">
<style type="text/css">
<!--
.lin { font-size: 10pt; color: #ff0066}
-->
</style>
</head>
<body bgcolor="#33ff00" >
<center class="lin"><b>
在线人数 </b>
<hr>
<?PHP
if(!isset($username))
$username="guest";
$dt=time();
$newdate=date("YmdHis",$dt);
$fromdate=date("YmdHis",$dt-200);
$linkid=mysql_connect("localhost","yourcount","password");
mysql_select_db("yourdatabase",$linkid);
$sql="update chat_getmsg set shijian="$newdate" where username="$username"";
mysql_query($sql,$linkid);
$sql="select username from chat_getmsg where shijian>="$fromdate"";
$res=mysql_query($sql,$linkid);
while(list($username)=mysql_fetch_row($res)){
echo "<a href="JavaScript:selectusername('$username')">$username</a><br>n";
$fromdate=date("YmdHis",$dt-100);
$sql="delete from chat where shijian<="$fromdate"";
mysql_query($sql,$linkid);
mysql_close($linkid);
}
?>
</center>
<Script language="JavaScript">
<!--
function selectusername(str)
{
var win=parent.frames[3]
var doc=win.document
var form1=doc.body.all("fayanform")
form1.objectname.value=str
}
-->
</script>
</body>
</html>

【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】