php进阶:写一个用户在线显示的程序_PHP
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php进阶:写一个用户在线显示的程序_PHP ,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2826字,纯文字阅读大概需要5分钟 。
内容图文
在开始这篇文章时,作者假设读者已能够写出一个用户的登入认证程序.
----------------------------------------------------------
记数器可完成访问 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 "
"; echo "现在在线人数为:$num"; echo " "; for($i=0;$i<$num;$i++){ $name=mysql_result($result,$i,"name"); echo "用户:$name "; } } ?> 上面这段程序已能显示所有在线的用户人数及各用户名,当然这个程序还很不完善.如果其中一个用户登出离开后,数据库就不应该有此用户的记录所以,还得在登出程序假设为 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 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 $result=mysql_query("select * from line"); $num=mysql_numrows($result); if (!empty($num)) { echo ""; echo "现在在线人数为:$num"; echo " "; for($i=0;$i<$num;$i++){ $name=mysql_result($result,$i,"name"); echo "用户:$name "; } } ?> 好用户在线显示功能完成.^o^
内容总结
以上是互联网集市为您收集整理的php进阶:写一个用户在线显示的程序_PHP 全部内容,希望文章能够帮你解决php进阶:写一个用户在线显示的程序_PHP 所遇到的程序开发问题。
如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
来源:【匿名】
更多 ►
【php进阶:写一个用户在线显示的程序_PHP】教程文章相关的互联网学习教程文章
在面向对象的程序中,我曾经见过的最大的switch/case语句所具有的条件超过了20个。在运行期间,这个代码模块每次都要执行所有的条件。每个条件都负责创建一个新的对象,这个对象被用于与应用程序API的外部使用这进行通信。对其中一个执行某些常规的故障处理之后,我开始研究应用程序所实现的接口。令我吃惊的是,switch/case语句中引用的每个类都在实现相同的接口!随后要在switch/case语句中添加新的条件语句时,我建议转而使用工...
什么是外观模式?通过在必须的逻辑和方法的集合前创建的外观接口,外观设计模式隐藏了来自调用对象的复杂性。为何使用外观设计模式:使用基于外观设计模式的对象的原因是接口第三方解决方案。需要记住的是,我们不断强调面向对象的项目应当知识关联对象的一个集合。鉴于这种体系结构,首席编程人员可能觉得使用第三方对象更为明智。假设要为某个应用程序提供搜索Web页面。该页面首先自己查找符合搜索项的所有数据。如果结果数小于1...
面向对象编程的最强大功能之一是其拥有动态特性。当今世界不断涌现出更多可用的功能、混合搭建结构以及持续发展的标准,动态代码具有了全新的含义。无论是新文件存储标准或流媒体标准,还是社会网站或某些有Internet先锋API上的新事物,Web编程总在不断地发生突变。如今在面对大量的可用选项时,处理判决的传统方式不再有效。通过将智能化对象移动到适当的位置,委托设计模式能够远离复杂的判决。什么是委托模式?通过分配或委托至...
什么是迭代器模式?迭代器设计模式可以帮助构造特定对象,那些对象能够提供单一标准接口循环或迭代任何类型的可计数数据。迭代器模式问题与解决方案:迭代器设计模式帮助样式对象处理数据或其他对象的集合。创建基于迭代器设计模式的类时,为了提供管理这些集合的统一方式,我们还会创建一组接口。有些时候,数据集似乎十分简单。编程人员肯能无法预计将会发生变化的情景,因此他们选择不修改代码和不创建迭代器。调用数据库时经常...
什么是适配器模式?适配器模式只是将某个对象的接口适配为另一个对象所期望的接口。适配器模式应用问题与解决方案在应用程序中,您也许会使用一个在体系结构上可靠稳定的工作代码库。不过我们常常会添加新的功能,这些功能要求采用不同的方式使用现有的对象,而不是采用原先设计的方式。此时,障碍可能只是新功能需要一个不同的名字。在较为复杂的场景中,障碍也可能是新功能需要与原始对象稍有不同的行为。针对上述问题,我们采用...
什么是中介者模式?中介者模式用于开发一个对象,这个对象能够在类似对象相互之间不直接相互的情况下传送或者调解对这些对象的集合的修改。一般处理具有类似属性,需要保持同步的非耦合对象时,最佳的做法就是中介者模式。PHP中不是特别常用的设计模式。模式动机: 1.在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题:系统结构复杂:对象之间存在大量的相互关联和调用,若有一个对象发...
什么是建造者模式?将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。设计场景:有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用户具体的信息结果。创建一个UserBuilder 用户建造者类,这个类,将UserInfo复杂的创建姓名,年龄,爱好等操作封装起来,简化用户类的创建过程 这是一个用户类class UserInfo
{ protected $_userName; protected $_us...
什么是观察者模式?观察者设计模式能够更便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能性。该模式非常简单:一个对象通过添加一个方法(该方法允许另一个对象,即观察者 注册自己)使本身变得可观察。当可观察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息执行的操作与可观察的对象无关。结果是对象可以相互对话,而不必了解原因。UML该图详细说明了一个使用观察者设计模式的类设...
什么是解释器模式?解释器设计模式用于分析一个实体的关键元素,并且针对每个元素都提供自己的解释或相应的动作。解释器模式问题与解决方案解释器设计模式是我们经常使用但未意识到的少数几个常见设计模式之一。并未限制这种设计模式只用于类的创建。在创建大多数编程算法的过程中,我们都会使用到解释器设计模式的基本概念。为了理解解释器设计模式的工作原理,我们以宏语言的处理为例。为每个宏编写的命令本身是更多命令的集合。...
什么是装饰器模式?如果对已有对象的部分内或功能性发生改变,但是不需要修改原始对象的结构,那么使用装饰器设计模式最适合。装饰器模式应用问题与解决方案:我们最开始学习面向对象编程的相关知识时,第一个障碍往往是理解继承当中的父子关系。随着时间的推移,我们会更加熟悉这种编程方法。当面对新的挑战时,经验丰富的面向对象编程人员会立即为某个对象扩展更多的功能。不过,正如万物皆有度,只有适度的使用才能保证这种工作...
什么是数据访问对象模式?数据访问对象设计模式描述了如何创建提供透明访问任何数据的对象。数据访问对象模式应用问题与解决方案对于同时学过PHP和MySQL的人来说,数据访问对象设计模式是一个全新的和令人兴奋的概念。这种设计模式的目的是解决下列两种特定的问题:重复与数据源抽象化。我们应当创建一个数据访问对象设计模式的对象。这个数据访问对象封装了创建sQL调用、减少实例创建的复杂性和重复以及更新进程的智能方式,其编写...
我们都知道在完成一件既定任务的时候,我们可能有多种方法,而这多种方法中有一些可能是一些容易的操作起来比较简单但完成任务的效率要差一些,有一 些是比较复杂不容易想到的可能完成任务的效率要好一些。在PHP开发中也一样,我们可能有多种方法完成一项功能,但并不是所有的方法都是最优的。下面这篇 摘自网络的文章主要是讲到提高PHP程序效率的53个要点,希望能对大家有所帮助。
1、如果能将类的方法定义成static,就尽量定义成...
一、抽像类(abstract) 在我们实际开发过程中,有些类并不需要被实例化,如前面学习到的一些父类,主要是让子类来继承,这样可以提高代码复用性 语法结构: 代码如下:abstract class 类名{ 属性 $name; 方法(){} //方法也可以为abstract 修饰符 function 方法名(){} } 例: 代码如下:abstract class animal{ public $name; public $age; //抽象方法不能有方法体,主要是为了让子类去实现; abstract public function cry(); //抽...
PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取)需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。使用多个 catch可以捕获不同的类所产生的异常。当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行...
1.分析 我们在用 php 制作网站时,分类是很重要的,在分类下面又再分类这第二个分类称为次分类,而现在大多数网站分类只分到第三类: 第一分类(父分类)第二分类(子分类)第三分类(孙分类) 这种亲缘分类越多,程序和数据库的控制就越加的复杂困难.在同一级的分类处理和控制是非常的简单的,因为只需要一个数据库来记载这一级的分类就行了,如:系统,新闻等分类,在这一级上处理是很简单的,但对一个网站来说一级分类是不够的,还需要再分类,如...