当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > php ajax网站浏览统计功能的简单实现

AJAX技术
AJAX 用户注册时的应用实例
ajax readyState的五种状态详解
php AJAX POST的使用实例代码
Ajax 用户名验证是否存在
Ajax+PHP简单基础入门实例教程
AJAX 异步传输数据的问题
ASP AJAX 静态分页
js装载xml文件然后发向服务器的实现代码
完成了AJAX树附原理分析
AJAX 支持搜索引擎问题分析
ajax Suggest类似google的搜索提示效果
Ajax 框架学习笔记
用ajax xml的数据读取的HelloWorld程序
Ajax 表单验证 实现代码
Ajax request response 乱码解决方法
AJAX 随记
ajax 乱码的一种解决方法
ajax session过期问题的几个解决方案
四步学会 Ajax
Ajax异步(请求)提交类 支持跨域

AJAX技术 中的 php ajax网站浏览统计功能的简单实现


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 70 ::
收藏到网摘: n/a

这个功能应该是很多网站都需要的,这里仅仅实现了一个基于文件的简易版本,数据库的版本请自行参考实现,我这里实现的功能很不完善,比如未过滤是否为同一访客,是否为同一IP等等,这里仅仅是给大家提供一个参考. 使用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
}
}
?>
这个功能应该是很多网站都需要的,这里仅仅实现了一个基于文件的简易版本,数据库的版本请自行参考实现,我这里实现的功能很不完善,比如未过滤是否为同一访客,是否为同一IP等等,这里仅仅是给大家提供一个参考.
对于这个文件中使用的连接设置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
可以进入来访者信息查看页面,例子截图如下