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


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 编程请选择正确的文本编辑软件
Dec 21 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
php简单中奖算法(实例)
Aug 15 PHP
PHP环形链表实现方法示例
Sep 15 PHP
yii2安装详细流程
May 23 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
对盗链说再见...
2006/10/09 PHP
PHP6 先修班 JSON实例代码
2008/08/23 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
文本加密解密
2006/06/23 Javascript
js取得url地址参数实例
2013/02/22 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python 串口读写的实现方法
2019/06/12 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Python字符串三种格式化输出
2020/09/17 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
省三好学生申请材料
2014/01/22 职场文书
物流业务员岗位职责
2014/02/08 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
商品陈列协议书
2014/09/29 职场文书
认真学习保证书
2015/02/26 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
mysql数据库实现设置字段长度
2022/06/10 MySQL
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers