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


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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
PHP新手上路(四)
Oct 09 PHP
浅谈PHP 闭包特性在实际应用中的问题
Oct 30 PHP
php遍历目录方法小结
Mar 10 PHP
Symfony2安装的方法(2种方法)
Feb 04 PHP
PHP中set_include_path()函数相关用法分析
Jul 18 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
php 常用的系统函数
Feb 07 PHP
php微信开发之谷歌测距
Jun 14 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 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的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
JavaScript async/await原理及实例解析
2020/12/02 Javascript
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
解决python报错MemoryError的问题
2018/06/26 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
python识别验证码的思路及解决方案
2020/09/13 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
寒假思想汇报
2014/01/10 职场文书
实习生自我评价
2014/01/18 职场文书
超市中秋节活动方案
2014/02/12 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2019年大学推荐信
2019/06/24 职场文书
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android