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


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 相关文章推荐
mysql时区问题
Mar 26 PHP
php中explode与split的区别介绍
Oct 03 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
Aug 31 PHP
php多文件上传下载示例分享
Feb 20 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
php上传图片类及用法示例
May 11 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
php中的依赖注入实例详解
2019/08/14 PHP
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
如何利用python读取micaps文件详解
2020/10/18 Python
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
民主生活会汇报材料
2014/12/15 职场文书
东京审判观后感
2015/06/01 职场文书
2015年暑假工作总结
2015/07/13 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
pytorch中的numel函数用法说明
2021/05/13 Python
pandas数值排序的实现实例
2021/07/25 Python
Python必备技巧之函数的使用详解
2022/04/04 Python
Python采集壁纸并实现炫轮播
2022/04/30 Python
Redis+AOP+自定义注解实现限流
2022/06/28 Redis