php ajax网站浏览统计功能的简单实现

  使用PHP语言实现,如果你看不明白,请留言.... 相信原理都差不多..

  为什么使用PHP做范例语言?

  不外乎两个因素: 1. PHP语法通俗易懂,有一点程序基础的人就可以了解;2.代码量比较少

  本功能实现的代码的目录结构见 [ajax实时任务提示功能的实现 -- vb2005xu自己动手系列(1)],这个可以作为它的插件插入,这里也是阐述一种开发思想:在网站开发的过程中,功能是逐步添加的,一开始并不能也不可以做到尽善尽美的设计.建议在刚开始的时候规划好项目的结构,后期好使用插件扩展功能实现.. 本人表达能力不好,哪位好的请留言表述,我将综合大家的东西改进,谢谢!

  个人推荐JAVA web 初级开发者使用三层模型的架构来开发,不管现在是否流行,他始终是一种好的开发规范!

  个人推荐PHP web 初级开发者使用MVC模型来开发网站,如果是开发富客户端的系统,则建议将VC两层[其实是一层半]全部分担给客户端也就是浏览器[和用户]来完成. 为什么说是"一层半",V全部给客户端,C的一半给浏览器[功能的连接地址],一半在服务器端执行[代码实现],比如使用EXTJS来开发的时候.....

  不再闲聊,让我们进入正题吧:还是之前的风格,先给大家看代码,不明白的请留言,我们共同探讨,高手也请留下精彩言论,我好总结,帮助我们这些入门者,谢谢大家.

  再次说明功能基于之前文章 [ajax实时任务提示功能的实现 -- vb2005xu自己动手系列(1),这个也可以当成是一个插件],但是功能完全独立出来了,之后的一系列文章也是在此之上进行扩展,当是领着大家实现一个完整的项目,比如后面会讲到用户授权的实现[将采用RBAC,J基于角色的访问控制 来实现],UI层也会使用EXTJS来做,也有站内邮件也就是短信息的实现等等

  为了方便插件的插入和功能的扩展,所以在这里我们要改动代码结构

  第一, 改下[ajax实时任务提示功能的实现]讲到的/ucren/taskofpig/Controller/Default.php,

  修改以下位置:

  1. 将文件名称由Default.php改为TaskOfPig.php

  2. 将里面的类名称由Controller_Default 改为Controller_TaskOfPig

  3. 修改这个类的构造函数名称由Controller_Default 改为Controller_TaskOfPig

  其他代码不变

  第二,新建一个/ucren/taskofpig/Controller/Default.php文件

  里面代码如下,暂时只有这些

  <?php

  class Controller_Default extends FLEA_Controller_Action

  {

  function actionIndex(){

  redirect(url('TaskOfPig'),0); //停顿0秒后,重定向到index.php?ctl=TaskOfPig

  }

  }

  ?>

  对于这个文件中使用的连接设置ctl参数见[ajax实时任务提示功能的实现]中的/ucren/taskofpig/appConfig.php

  文件的controllerAccessor 设置.

  //各位注意目录使用Serv这是这个它是一个插件,(*^__^*) 嘻嘻……

  /ucren/taskofpig/Serv/VisiterService.php

  <?php

  class Serv_VisiterService

  {

  var $log_file ;

  function Serv_VisiterService($log_file) //必须传递日志文件路径进来

  {

  $this->log_file = $log_file ;

  }

  function addVisiter()

  {

  $newVisiter = array(

  'guest_ip' => $_SERVER["REMOTE_ADDR"] ,

  'time' => date('Y-m-d H:i:s') ,

  'guest_port' => $_SERVER["REMOTE_PORT"] ,

  'request_uri' => $_SERVER["REQUEST_URI"] ,

  'accept_lang' => $_SERVER["HTTP_ACCEPT_LANGUAGE"] ,

  'os_info' => $_SERVER["HTTP_USER_AGENT"]

  );

  //$fp = fopen("{$this->prj_dir}/_log/visiter.dat","a+b");

  $fp = fopen($this->log_file,"a+b");

  fwrite($fp,serialize($newVisiter));

  //写入换行符--LINUX是\n windows是 \r\n ,这里要求注意 单引号与双引号的区别

  fwrite($fp,"\r\n");//单引号不转义

  fclose($fp);

  }

  function getVisiters()

  {

  if (!file_exists($this->log_file))

  return null ;

  $visiterArr_tmp = file($this->log_file) ;//将文件读入数组中

  foreach($visiterArr_tmp as $visiter)

  {

  $visiterArr[] = unserialize($visiter) ;

  }

  return $visiterArr ;

  }

  }

  ?>

  这里在上文中新建的/ucren/taskofpig/Controller/Default.php文件中添加如下代码,完整代码如下

  <?php

  FLEA::loadFile('Serv_VisiterService.php',true) ;//加载访客统计插件代码到程序中

  class Controller_Default extends FLEA_Controller_Action

  {

  var $prj_dir ;var $visiters ;var $smarty ;

  function actionIndex(){

  $this->prj_dir = '.' ;

  $this->smarty = $this->_getView(); //获取smarty模板对象,在/ucren/taskofpig/appConfig.php中配置

  $this->visiters = new Serv_VisiterService("{$this->prj_dir}/log/visiter.dat") ;

  //添加访客

  $this->visiters->addVisiter();

  redirect(url('TaskOfPig'),0); //停顿0秒后,重定向到index.php?ctl=TaskOfPig

  }

  function actionVisiters() //访客统计列表

  {

  $this->smarty->assign('sitename','任务计划表 -- 生气猪') ;

  $this->smarty->assign('opname','访客统计') ;

  $rows = $this->visiters->getVisiters();

  $this->smarty->assign('rowSet',$rows);

  $this->_showPage('taskofpig.visiterlist.html');

  }

  }

  ?>

  /ucren/taskofpig/tpl/taskofpig.visiterlist.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title><%$sitename%> -- <%$opname%></title>

  </head>

  <body>

  <hr>

  <table width="100%" border="1" cellspacing="1" bgcolor="#cfdadc">

  <tr bgcolor="#e8edec" align="center">

  <td><b>访问次序</b></td>

  <td><b>IP地址</b></td>

  <td><b>日期/时间</b></td>

  <td><b>客户机信息</b></td>

  </tr>

  <%section name=rowIndex loop=$rowSet%>

  <tr align="center">

  <%*注意怎么获取rowIndex的语法*%>

  <td><%$smarty.section.rowIndex.index%></td>

  <td><%$rowSet[rowIndex].guest_ip%></td>

  <td><%$rowSet[rowIndex].time%></td>

  <td><%$rowSet[rowIndex].os_info%></td>

  </tr>

  <%/section%>

  </table>

  </body>

  </html>

  这样就可以在浏览器中敲入

  http://localhost/ucren/taskofpig 进入,缺省将在后台加入访问者信息,如果你敲入

  http://localhost/ucren/taskofpig/index.php?act=visiters

  可以进入来访者信息查看页面,例子截图如下