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


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程序
Oct 09 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
解析PHP 5.5 新特性
Jul 02 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
windows下apache搭建php开发环境
Aug 27 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 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中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
浅析使用Python搭建http服务器
2019/10/27 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
上海某公司.net方向笔试题
2014/09/14 面试题
给同事的道歉信
2014/01/11 职场文书
制作部班长职位说明书
2014/02/26 职场文书
出国留学经济担保书
2014/04/01 职场文书
学生操行评语大全
2014/04/24 职场文书
文明演讲稿范文
2014/05/12 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
初中生物教学反思
2016/02/20 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
基于JavaScript实现省市联动效果
2021/06/22 Javascript
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
python获取字符串中的email
2022/03/31 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript