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


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基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
PHP设置Cookie的HTTPONLY属性方法
Feb 09 PHP
PHP单例模式简单用法示例
Jun 23 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
php和vue配合使用技巧和方法
May 09 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
node.js实现多图片上传实例
2014/06/03 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
前端微信支付js代码
2016/07/25 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
浅谈vuepress 踩坑记
2018/04/18 Javascript
npm的lock机制解析
2019/06/20 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
Python对list列表结构中的值进行去重的方法总结
2016/05/07 Python
Python实现针对中文排序的方法
2017/05/09 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
Python简易版图书管理系统
2019/08/12 Python
django API 中接口的互相调用实例
2020/04/01 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
家长评语大全
2014/01/22 职场文书
高三生物教学反思
2016/02/22 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技