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


Posted in PHP onOctober 09, 2006

在开始这篇文章时,作者假设读者已能够写出一个用户的登入认证程序.
----------------------------------------------------------
记数器可完成访问 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>";
}
}
?>

好用户在线显示功能完成.

PHP 相关文章推荐
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
基于php无限分类的深入理解
Jun 02 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
php的ZipArchive类用法实例
Oct 20 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
PHP单例模式详细介绍
Jul 01 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP7 参数处理机制修改
Mar 09 PHP
PHP4引用文件语句的对比
Oct 09 #PHP
一个php作的文本留言本的例子(六)
Oct 09 #PHP
一个php作的文本留言本的例子(二)
Oct 09 #PHP
一个php作的文本留言本的例子(三)
Oct 09 #PHP
一个php作的文本留言本的例子(四)
Oct 09 #PHP
一个php作的文本留言本的例子(五)
Oct 09 #PHP
一个php作的文本留言本的例子(一)
Oct 09 #PHP
You might like
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
2015/05/27 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
介绍一下Java中标识符的命名规则
2014/02/03 面试题
营销与策划专业毕业生求职信
2013/11/01 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
群教班子对照检查材料
2014/08/26 职场文书
上党课的心得体会
2014/09/02 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
公司车辆管理制度
2015/08/04 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python