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


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+mysql一个名片库程序
Oct 09 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
详解Vue双向数据绑定原理解析
2017/09/11 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
python 测试实现方法
2008/12/24 Python
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
Django使用rest_framework写出API
2020/05/21 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
电气专业推荐信范文
2013/11/18 职场文书
社区母亲节活动方案
2014/03/05 职场文书
暑假家长评语大全
2014/04/17 职场文书
计算机软件专业求职信
2014/06/10 职场文书
技术负责人岗位职责
2015/02/10 职场文书
专家推荐信范文
2015/03/26 职场文书
简历自我评价范文
2019/04/24 职场文书