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

AJAX技术
一个简单的ASP+AJAX留言本源码下载
IE7下ajax之open Method New的说明
ASP+Ajax实现无刷新评论简单例子
AJAX的阻塞及跨域名解析
[js]一个获取页面ip的正则
AJAX乱码解决新方法
也写一个Ajax.Request类附代码
AJAX简历系统附js文件
Ajax留言本源码 提供下载了
找到一款不错的基于AJAX留言板源码(PHP版、ASP版)提供下载了
Ajax 学习资源 中外都有
本人ajax留言板的源程序 不错的应用js
xmlhttp 乱码 比较完整的解决方法 (UTF8,GB2312 编码 解码)
AJAX集天气\IP\多国语言翻译MP3(可同步LRC歌词显示)\万年历查询通
AJAX缓存问题的两种解决方法(IE)
AJAX 常用函数创建XMLHTTP对象,区别IE,Mozilla浏览器
Ajax的小贴士使用小结
用ajax动态加载需要的js文件
XMLHTTP多浏览器兼容性写法
PJBLOG中用到的ajaxjs.几个简单的函数

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 75 ::
收藏到网摘: 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
可以进入来访者信息查看页面,例子截图如下