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


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 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
木翼下载系统中说明的PHP安全配置方法
Jun 16 PHP
PHP 字符串 小常识
Jun 05 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
laravel 执行迁移回滚示例
Oct 23 PHP
laravel5.1 ajax post 传值_token示例
Oct 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
javascript事件模型代码
2007/07/01 Javascript
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
js装饰设计模式学习心得
2018/02/17 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
django 将model转换为字典的方法示例
2018/10/16 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
python文件读取失败怎么处理
2020/06/23 Python
艺术教育实施方案
2014/05/03 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
新郎答谢词
2015/01/04 职场文书
慰问信模板
2015/02/14 职场文书
行政经理岗位职责
2015/04/15 职场文书
详解Vue router路由
2021/11/20 Vue.js
Oracle中日期的使用方法实例
2022/07/07 Oracle
SQLServer常见数学函数梳理总结
2022/08/05 MySQL