大至思路是这样的:
1、建立一个在线用户表,应该有用户名,最后访问服务器时间等字段
2、用户打开登录网页时,检查在上表中有没有该用户的在线记录,如果没有记录到上表中。(最好能再检查一下有没有断线的用户,根据是:用户如果在规定时间内都没有动静了,就可以认为已经不在线了)
3、用户有刷新网页,或新开网页时,更新最后访问时间。
4、在关键页面的unload事件中注消用户,即从在线用户表中删除该用户的记录。5、至于该表记录的显示就不用多说了吧?
1、建立一个在线用户表,应该有用户名,最后访问服务器时间等字段
2、用户打开登录网页时,检查在上表中有没有该用户的在线记录,如果没有记录到上表中。(最好能再检查一下有没有断线的用户,根据是:用户如果在规定时间内都没有动静了,就可以认为已经不在线了)
3、用户有刷新网页,或新开网页时,更新最后访问时间。
4、在关键页面的unload事件中注消用户,即从在线用户表中删除该用户的记录。5、至于该表记录的显示就不用多说了吧?
解决方案 »
- 一套系统 支持不同语言 文件下载
- php点击按钮或链接显示上一条和下一条记录如何做?
- 求一个城市气象代码数据库
- smartyTemplate问题
- 请问关于用each(..)处理$_POST的问题
- 远程下载问题
- mysql 建表时出现 Can't create/write to file './hzfhly/liuyan.frm' (Errcode: 13),为什么?100分
- MYSQL上传问题!,空间支持PHP+MYSQL,我在本地作好的东西!PHP可以直接传上去!那么数据库我给怎么弄上去啊!达人解答!
- php怎样处理上传文件啊??
- 问个简单问题:怎样获得另一个页面的提交数据?
- 紧急求救!!!MySQL莫名停止运行!!!
- 请问有谁可以在PHP中判断当前一个汉字是繁体字还是简体呢?请各位大侠帮忙!
我试过像是有点问题.
还有这关键页面是一页还是多页?
如果用户刷新或历史后退或在地址中打入其他地址会有什么影响?
主页面是一个框架,在主页面里有一个chatunload函数,这个函数由input.php调用的。
摘自main.php
<frameset cols="62,14" border="0" frameborder="0">
<frameset rows="*,85" border="0">
<frame name="main" src="zhong.php?name=<?php echo $name; ?>&room=<? echo $room; ?>" marginwidth="0" marginheight="0"noresize>
<frame name="input" src="input.php?name=<?php echo $name; ?>&room=<? echo $room; ?>&p=<? echo $pass; ?>&s1ex=<? echo $s1ex; ?>" marginwidth="0" scrolling="no" marginheight="0"noresize>
</frameset>
<frameset rows="*,85" border="0" frameborder="0">
<frame name="online" src="online.php?name=<?php echo $name; ?>&room=<? echo $room; ?>&roomname=<? echo $roomname;?>" marginwidth="0" marginheight="0" noresize scrolling="auto">
<frame name="system" src="system.php?name=<?php echo $name; ?>&room=<? echo $room; ?>" marginwidth="0" marginheight="0" noresize scrolling="auto">
</frameset>
</frameset>
</frameset><script>
function ChatUnload()
{
window.open('logout.php?action=quit&&name=<? print($name); ?>&&room=<? print($room); ?>&&point=<? print($point); ?>','close','menubar=0,toolbar=0,location=no,status=no,directories=0,scrollbars=0,resizable=no,top=6000 ,left=800,width=20,height=5');
}
</script>
下面是在input.php的unload事件中调用ChatUnload函数的方法:
<body onunload="parent.ChatUnload()" >
根据你的实际情况做些改动应该就可以用了
////////////////////////////////////////
// 在线人数统计 line.inc
// $jiangetime 间隔时间
// $datetime 当前时间
// $num 在线人数
// 输入:无
// 输出:$num
////////////////////////////////////////
function sumOnline()
{
$jiangetime=600;//规定在线时间
$datetime = time();
$sult = "DELETE FROM ccol WHERE (".$datetime."-dtstamp)>".$jiangetime;
$result = sybase_query($sult);
if (!$result)
{
echo "删除有误!";
}
$sult = "SELECT * FROM ccol WHERE ip='".$REMOTE_ADDR."'";
$result = sybase_query($sult);
if ($result)
{
if(sybase_num_rows($result)==1)
{
$sult = "UPDATE ccol SET dtstamp=".$datetime.", uri='".$REQUEST_URI."' WHERE ip='".$REMOTE_ADDR."'";
$result = sybase_query($sult);
if (!$result)
{
echo "重写有误!";
}
}
else
{
echo $datetime;
$sult = "INSERT INTO ccol (ip,dtstamp,uri)VALUES ('".$REMOTE_ADDR."', ".$datetime.", '".$REQUEST_URI."')";
$result = sybase_query($sult);
if (!$result)
{
echo "插入数据!";
}
}
} $sult = "SELECT * FROM ccol WHERE (".$datetime."-dtstamp)<=".$jiangetime;
$result = sybase_query($sult);
if ($result)
{
$num = sybase_num_rows($result);
sybase_free_result($result);
}
else
$num = 0;
return $num;
}
?>