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


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 相关文章推荐
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
PHP无限分类(树形类)
Sep 28 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
自制PHP框架之设计模式
May 07 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
May 05 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
公司JAVA开发面试题
2015/04/02 面试题
机电一体化毕业生求职信
2013/11/02 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
使用javascript解析二维码的三种方式
2021/11/11 Javascript