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


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+mysql保存和输出文件
Oct 09 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
php文件下载处理方法分析
Apr 22 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
laravel学习教程之关联模型
Jul 30 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
php实现水印文字和缩略图的方法示例
Dec 29 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
实现php删除链表中重复的结点
Sep 27 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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验证码类实例分享
2013/12/27 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python使用tkinter实现简单计算器
2018/01/30 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
python退出循环的方法
2020/06/18 Python
公益活动策划方案
2014/01/09 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
小学校长个人总结
2015/03/03 职场文书
小学生班干部竞选稿
2015/11/20 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
OpenCV实现反阈值二值化
2021/11/17 Java/Android