CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

如何实现访客在线显示?

楼主boy_go(busycat)2002-03-22 20:07:34 在 Web 开发 / PHP 提问

如何实现访客在线显示?? 问题点数:50、回复次数:5Top

1 楼wd_318(饭加加)回复于 2002-03-22 20:19:15 得分 0

大至思路是这样的:  
  1、建立一个在线用户表,应该有用户名,最后访问服务器时间等字段  
  2、用户打开登录网页时,检查在上表中有没有该用户的在线记录,如果没有记录到上表中。(最好能再检查一下有没有断线的用户,根据是:用户如果在规定时间内都没有动静了,就可以认为已经不在线了)  
  3、用户有刷新网页,或新开网页时,更新最后访问时间。  
  4、在关键页面的unload事件中注消用户,即从在线用户表中删除该用户的记录。  
   
  5、至于该表记录的显示就不用多说了吧?Top

2 楼boy_go(busycat)回复于 2002-03-23 12:03:45 得分 0

能否详细说明一下unload的用法,  
  我试过像是有点问题.  
  还有这关键页面是一页还是多页?  
  如果用户刷新或历史后退或在地址中打入其他地址会有什么影响?  
  Top

3 楼wd_318(饭加加)回复于 2002-03-23 14:17:16 得分 20

以下是我从一个聊天室程序里摘出来的:  
  主页面是一个框架,在主页面里有一个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()"   >  
   
   
  根据你的实际情况做些改动应该就可以用了Top

4 楼boy_go(busycat)回复于 2002-03-23 22:43:36 得分 0

请问有没有浏览器关闭的事件?Top

5 楼dandongyyb(yyb)回复于 2002-04-03 09:40:45 得分 30

<?  
  ////////////////////////////////////////  
  //                       在线人数统计   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;  
  }  
  ?>Top

相关问题

  • 像QQ里的显示在线人数是怎么实现的??
  • 怎样实现记录得分页显示,在线等!!!100分
  • ASP.NET中怎样实现在线人数的显示?
  • 水晶报表如何实现分列显示?在线等待。
  • 如何实现:显示及打印都是细线的table??
  • 求助,如何实现图片的动态显示?在线等.
  • 一些论坛上的在线\离线显示是如何实现的?
  • 实现时间显示
  • 想将name和age的值显示出来.请问如何实现/......(100..实现给分.再线等.谢谢)
  • 如何在c语言下实现256色显示?(100分在线等)

关键词

  • sybase
  • 用户
  • 函数
  • 网页
  • php
  • ip
  • sult
  • ccol
  • dtstamp
  • noresize

得分解答快速导航

  • 帖主:boy_go
  • wd_318
  • dandongyyb

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo