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


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学习 运算符与运算符优先级
Jun 15 PHP
一贴学会PHP 新手入门教程
Aug 03 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
PHP图片加水印实现方法
May 06 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
php中通用的excel导出方法实例
Dec 30 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 PHP
如何理解PHP核心特性命名空间
May 28 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
Highcharts入门之简介
2016/08/02 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
详解vue配置后台接口方式
2019/03/29 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
Python标准库与第三方库详解
2014/07/22 Python
详解python中的json和字典dict
2018/06/22 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
学前教育求职自荐信范文
2013/12/25 职场文书
党建工作先进材料
2014/05/02 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
小学教师岗位职责
2015/04/02 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python