写一个用户在线显示的程序

在开始这篇文章时,作者假设读者已能够写出一个用户的登入认证程序.
----------------------------------------------------------
记数器可完成访问 web 页的总次数,但却不能得知一个时段中访问量的动态记载,下面就来介绍如何写一个各个时段动态显示访问量的方法.

要记载访问量,首先就要在 mysql 内建立一个数据库,姑且给这个数据库取名为 line,同时建立一个名为 line 的数据表,表内的字段分别为"用户名(name varchar(20)),时间(time datetime)".当然读者也可根据需要增加数据表的字段.

建立好数据库后,就可以开始设计程序了,现在先理清一下思路,要想显示访问量,当然数据库就必须要有记录,我已假设读者有能力写一个用户登入程序了,所以向数据库添加纪录可在登入程序假设为 login.php 里添加:

先给现在时间付值:$time=date('Y-m-d H:i:s');
mysql_select_db(line);
mysql_query("insert into line (name,time) values('$name','$time')");

好了,现在每一位登入的用户在数据库里都有了一个记录,下面就来完成用户在线显示的程序 line.php:

<?
mysql_connect("local","","");
mysql_select_db(line);
$result=mysql_query("select * from line");
$num=mysql_numrows($result);
if (!empty($num)) {
echo "<table><tr><td>";
echo "现在在线人数为:$num";
echo "</td></tr>";
for($i=0;$i<$num;$i++){
$name=mysql_result($result,$i,"name");
echo "<tr><td>用户:$name</td></tr>";
}
}
?>

上面这段程序已能显示所有在线的用户人数及各用户名,当然这个程序还很不完善.如果其中一个用户登出离开后,数据库就不应该有此用户的记录所以,还得在登出程序假设为 logout.php 内加上删除功能:

mysql_select_db(line);
mysql_query("delete from line where name='$name'");

这时一个基本的用户在线功能已经完成,接下来继续在 line.php 内增加代码使功能更加完善,首先我们得规定用户在多长时间没继续浏览 line.php 时就认为该用户已经离开,这里给定一个时间限制为 5 分钟,也就是说程序将显示从现在开始的前 5 分钟的用户情况,所以必须 line.php 内设置一个现在时间告知程序从这个时间开始执行,然后实现程序执行时把数据库内记录的时间减去现在时间大于 5 分钟的所有记录删除,这样任何用户在执行 line.php 时,都能看到 5 分钟内的所有在线的用户,完成这个功能需要以下这个数据库语句:

delete from line where time<date_sub('$time',interval 5
minute)

但是其中还有一个问题就是如果有个用户一直在不停地执行 line.php 超过 5 分钟以上时,程序必须得分辨出该用户并一直显示该用户,在这就得利用 cookie 来实现更新数据库的时间记录了,因为是登入认证的,所以会有个 cookie 来记住用户的资料的,假设这个记录用户姓名的 cookie 变量为 $cookiename (具体的变量视 cookie 的设置而定),剩下的就很好办了,利用这个 cookie 变量完成数据库的修改:

update line set time='$time' where name='$cookiename'

下面来完善 line.php:

<?
//设置现在的时间
$time=date('Y-m-d H:i:s');
mysql_connect("local","","");
mysql_select_db(line);

//更新用户的记录
mysql_query("update line set time='$time' where name='$cookiename'");

//删除超过 5 分钟的用户记录
mysql_query("delete from line where time<date_sub('$time',interval 5 minute)");

$result=mysql_query("select * from line");
$num=mysql_numrows($result);
if (!empty($num)) {
echo "<table><tr><td>";
echo "现在在线人数为:$num";
echo "</td></tr>";
for($i=0;$i<$num;$i++){
$name=mysql_result($result,$i,"name");
echo "<tr><td>用户:$name</td></tr>";
}
}
?>

好用户在线显示功能完成. 转自:动态网制作指南 www.knowsky.com

时间: 2024-08-08 16:29:00

写一个用户在线显示的程序的相关文章

php 进阶:写一个用户在线显示的程序

在开始这篇文章时,作者假设读者已能够写出一个用户的登入认证程序. ---------------------------------------------------------- 记数器可完成访问 web 页的总次数,但却不能得知一个时段中访问量的动态记载,下面就来介绍如何写一个各个时段动态显示访问量的方法. 要记载访问量,首先就要在 mysql 内建立一个数据库,姑且给这个数据库取名为 line,同时建立一个名为 line 的数据表,表内的字段分别为"用户名(name varchar(20

vc 如何创建服务-VC 开机自动启动。不用写注册表的方法。想写一个服务来启动这个程序。

问题描述 VC 开机自动启动.不用写注册表的方法.想写一个服务来启动这个程序. 有个EXE程序想要它开机自动启动.我不想用写注册表的方法启动.看能不能够写一个服务来启动这个程序.如果可以麻烦大家能够提供源码.谢谢!!!!! 解决方案 创建服务,CreateService()

windows-用MFC写一个window蓝牙通讯的程序需要用到哪些

问题描述 用MFC写一个window蓝牙通讯的程序需要用到哪些 在vs2013环境下用MFC写一个window蓝牙通讯的程序,需要哪些东西,要Windows SDK吗?vs 2013是否自带有 windows SDK? 解决方案 #include < Winsock2.h > #include < Ws2bth.h > #include < BluetoothAPIs.h > #pragma comment(lib, "ws2_32.lib") #p

ava 基础-如何使用JavaSEAPI写一个实现DOS命令的程序?

问题描述 如何使用JavaSEAPI写一个实现DOS命令的程序? javaseAPI可以写出能够控制系统开关机,之类的程序...

log4j-想写一个docx转html的程序但是控制台显示的是这样,并且在html的第一行有警告

问题描述 想写一个docx转html的程序但是控制台显示的是这样,并且在html的第一行有警告 log4j:WARN No appenders could be found for logger (org.docx4j.jaxb.Context). log4j:WARN Please initialize the log4j system properly. 解决方案 实际上这种警告很正常的,网上也有对应消除警告的方法:http://blog.sina.com.cn/s/blog_5f7d1a6

c语言-如何用C语言写一个暴力破解SSH的程序

问题描述 如何用C语言写一个暴力破解SSH的程序 也就是用同文件夹里的一个字典,可以用fopen和fgets把密码一条一条打开,可是我不知道怎么在C语言里对一个其他地址进行SSH 求大神解答 解决方案 C语言没有 SSH 的功能,所以需要你去自己搞 SSH 算法. 解决方案二: 参考openssh,这个是开源的,可以用它来调用,连接http://www.openssh.com/

19. Html5的局: 手把手写一个100行的VR程序

紧接上文 WebVR扩展了WebGL的标准,增加了HMD.PS等组件,让开发者可以在H5上开发VR程序.高级VR设备往往拥有了比手机更高精度的传感器.显示器.GPU等,让用户可以更加真实的感受虚拟世界.本节是<Html5的局>最后一节,我们手把手的写一段VR代码,感受WebVR的便捷. 本次Demo所需二维码 用户可以本地启动HTTP服务,将URL填写到播放路径 3D地球 环境准备 Three.js 到http://www.threejs.org下载最新源码,这里使用three.min.js作

我想写一个查询在线IP功能的软件模块,但写好后出不来效果,跪求高手指点,谢谢。

问题描述 我这个主要是想实现查询一段给定的IP地址(例如:10.0.214.5-10.0.214.90)看看有哪些是在线的并以树的形式显示出来(这段代码还没写),类似于飞鸽的显示在线用户的功能一样.这里我写的这段程序,主要分为三个部分:界面,发送验证信息的线程.接受验证信息并回复的线程.我感觉自己可能逻辑上存在问题,跪求高手指点,我编程还比较猜.希望高手援救,谢谢.//这是运行时的界面,还很简陋,实现功能后再美化importjava.awt.event.*;importjava.net.*;im

用ASP.Net写一个发送ICQ信息的程序代码

asp.net|程序 这里我给大家提供一个很实用的例子,就是在线发送ICQ信息.想一想我们在网页上直接给朋友发送ICQ信息,那是多么美妙的事情啊.呵呵,在吹牛啊,其实ICQ本来就有在线发送的代码,不过,这些都是AOL给你写好的代码,多没有意思啊.还是自已写的比较好,呵呵,废话少说,大家来看代码吧. <% @ Page Language="C#" %><% @ Assembly Name="System.Net" %><% @ Impor