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

2016-02-19 11:32 18 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享php ajax网站浏览统计功能的简单实现教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - Web开发 】

使用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是 rn ,这里要求注意 单引号与双引号的区别
fwrite($fp,"rn");//单引号不转义
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%" cellspacing="1" bgcolor="#cfdadc"
tr bgcolor="#e8edec" style="text-align:center"
tdb访问次序/b/td
tdbIP地址/b/td
tdb日期/时间/b/td
tdb客户机信息/b/td
/tr
%section name=rowIndex loop=$rowSet%
tr style="text-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
可以进入来访者信息查看页面,例子截图如下

来源:http://www.tulaoshi.com/n/20160219/1597791.html

延伸阅读
标签: PHP
  //文件上传。Linux+apache+php3/4测试通过。iis测试未通过,win+apache+php未测试   <?php   if ($HTTP_POST_VARS["upload"]=="上传"){   file://这里你可以加上检查文件名,格式,图片尺寸等功能,   file://$picurl 本地系统的全路径   file://$picurl_nam...
标签: PHP
  文/徐永久 我们知道 Zend 有免费的优化引擎针对 PHP 而作,但是 FreeLAMP 这次采用的是一个叫做 PHP Accelerator 的缓冲产品。 我们在 “LAMP 加速” 这篇文章中阐述过加速的几种办法,其中提到了 PHP Accelerator,它的安装方法十分简单,但是需要去他的网站获取一个激活键。    一、下载: www.php...
标签: PHP
异步的文件上传是在现代的AJAX实现的Web应用里面经常要遇到,必须解决的问题。但是标准的AJAX类(XmlHttpRequest)无法实现传输文件的功能。因此,这里讨论的内容就是如何在AJAX的技术的基础之上构建异步的文件上传功能。在这个功能当中需要使用到内置的框及(IFRAME)来传输文件。这个功能实现的效果是页面在上传文件的时候...
标签: Web开发
这个插件支持多个文件选取功能,很不错,而且代码简单 代码如下: $("#fileUpload").fileUpload({ 'uploader': 'style/uploader.swf', 'cancelImg': 'style/img/cancel.png', 'folder': '/mbs/fileUpload', 'script': '/mbs/FileUpload', 'buttonText': 'Durchsuchen', 'fileDesc': '*.jpg;*.gif;*.png', 'fileExt': '*.jpg;*.gif;*.p...
标签: Web开发
这里我的例子是利用PHP中的Image函数实现动态生成GIF图象文件的,用户在不同的时间访问可以返回不同的小日历图片,代码如下: ?phpheader("Content-type: image/gif");$y=date(Y);$m=date(n);$w=date(w);$d=date(j);$ws[0]="Sun";$ws[1]="Mon";$ws[2]="Tue";$ws[3]="Wed";$ws[4]=&quo...

经验教程

429

收藏

12
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部