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


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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
php中对xml读取的相关函数的介绍一
Jun 05 PHP
php htmlentities和htmlspecialchars 的区别
Aug 18 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 PHP
php.ini中的request_order推荐设置
May 10 PHP
PHP安装memcached扩展笔记
May 28 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
PHP函数func_num_args用法实例分析
Dec 07 PHP
PHP异常处理Exception类
Dec 11 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
Python重新引入被覆盖的自带function
2014/07/16 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
python字符串中的单双引
2017/02/16 Python
python 按不同维度求和,最值,均值的实例
2018/06/28 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
一套带网友答案的.NET笔试题
2016/12/06 面试题
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
法雷奥SQA(electric)面试问题
2016/01/23 面试题
培训心得体会
2013/12/29 职场文书
运动会获奖感言
2014/02/11 职场文书
统计岗位职责
2014/02/21 职场文书
工程售后服务承诺书
2014/05/21 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android