发款php蜘蛛统计插件只要有mysql就可用


Posted in PHP onOctober 12, 2010

于是昨天便认真的做了一下,功能多一点,可以对各种搜索引擎统计分析。可以在多个时间段进行查看。其实代码很简单,为了更简洁些,代码压缩到6k.分为6个文件
1.安装程序 spilder_install.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>安装插件</title> 
</head> 
<?php 
if($_POST['act']=='install')//如果是安装 
{ 
$mysql_host=trim($_POST['mysql_host']);//获取主机 
$mysql_user=trim($_POST['mysql_user']);//获取用户名 
$mysql_pwd=trim($_POST['mysql_pwd']);//获取密码 
$mysql_db=trim($_POST['mysql_db']);//数据库 
$table_prefix=trim($_POST['table_prefix']);//获取前缀 
if($link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd)) 
{ 
echo "连接服务器成功!.................<br>"; 
} 
else 
{ 
echo "<script>alert('链接出错!请检查数据库服务器配置!');history.go(-1);</script>"; 
} 
if(mysql_select_db($mysql_db,$link)) 
{ 
echo "连接数据库成功!.............<br>正在创建表................<br>"; 
} 
$sql="CREATE TABLE `spilder_sp_count` ( 
`id` bigint(20) NOT NULL auto_increment, 
`r_time` int(11) NOT NULL, 
`r_name` varchar(50) NOT NULL, 
`r_url` varchar(200) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=4 ; 
"; 
mysql_query("DROP TABLE IF EXISTS `".$table_prefix."sp_count`;");//删除已存在 
$sql=str_replace("spilder_",$table_prefix,$sql);//替换前缀 
if(mysql_query($sql)) 
{ 
echo "表创建成功!正在写入文件"; 
} 
$f=file_get_contents("spilder_config.php");//获取配置内容 
$f=str_replace(" ","",$f);//去除空格 
$f=preg_replace("/mysql_host=.*;/iUs","mysql_host='{$mysql_host}';",$f); 
$f=preg_replace("/mysql_user=.*;/iUs","mysql_user='{$mysql_user}';",$f); 
$f=preg_replace("/mysql_pwd=.*;/iUs","mysql_pwd='{$mysql_pwd}';",$f); 
$f=preg_replace("/mysql_db=.*;/iUs","mysql_db='{$mysql_db}';",$f); 
$f=preg_replace("/table_prefix=.*;/iUs","table_prefix='{$table_prefix}';",$f); 
$f=preg_replace("/sp_admin=.*;/iUs","sp_admin='{$sp_admin}';",$f); 
file_put_contents("spilder_config.php",$f); 
file_put_contents("isinstall.txt","OK"); 
echo "恭喜!荐礼啦蜘蛛统计程序安装成功 <a href=\"index.php\">查看</a>"; 
exit(); 
} 
?> 
<body> 
<table width="600" border="0" align="center"> 
<tr> 
<td align="center">荐礼啦 蜘蛛统计查看器</td> 
</tr> 
</table> 
<form method="post"> 
<table width="600" border="0" align="center" cellspacing="0"> 
<tr> 
<td width="280"> </td> 
<td width="610">开始安装</td> 
</tr> 
<tr> 
<td align="right">服务器:</td> 
<td><input name="mysql_host" type="text" id="mysql_host" value="localhost" /> 
(一般不用改)</td> 
</tr> 
<tr> 
<td align="right">用户名:</td> 
<td><input type="text" name="mysql_user" id="mysql_user" /></td> 
</tr> 
<tr> 
<td align="right">密码:</td> 
<td><input type="password" name="mysql_pwd" id="mysql_pwd" /></td> 
</tr> 
<tr> 
<td align="right">数据库:</td> 
<td><input type="text" name="mysql_db" id="mysql_db" /></td> 
</tr> 
<tr> 
<td align="right">表前缀:</td> 
<td><input name="table_prefix" type="text" id="table_prefix" value="spilder_" /> 
<input name="act" type="hidden" id="act" value="install" /></td> 
</tr> 
<tr> 
<td align="right">管理密码:</td> 
<td><input type="password" name="sp_admin" id="sp_admin" /></td> 
</tr> 
<tr> 
<td align="right"> </td> 
<td><input type="submit" name="button" id="button" value="安装" /></td> 
</tr> 
</table> 
</form> 
</body> 
</html>

2.蜘蛛记录文件
<?php 
require("spilder_config.php");//调用配置文件 
$link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd) or die("服务器连接出错");//链接数据库 
mysql_select_db($mysql_db,$link) or die('数据库连接出错'); 
$searchbot = get_naps_bot(); 
if($searchbot) 
{ 
date_default_timezone_set('PRC'); //设置默认时区 
$r_time=strtotime(date("Y-m-d H:i:s"));//最后更新时间 
$ServerName = $_SERVER["SERVER_NAME"] ; 
$ServerPort = $_SERVER["SERVER_PORT"] ; 
$ScriptName = $_SERVER["SCRIPT_NAME"] ; 
$QueryString = $_SERVER["QUERY_STRING"] ; 
$url="http://".$ServerName ; 
If ($ServerPort != "80") 
{ 
$url = $url.":".$ServerPort ; 
} 
$url=$url.$ScriptName ; 
If ($QueryString !="") 
{ 
$url=$url."?".$QueryString ; 
} 
//$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
$GLOBALS['db']->db_query("insert into {$table_prefix}sp_count(r_time,r_name,r_url) values('$r_time','$searchbot','$url')"); 
} 
function get_naps_bot() 
{ 
$useragent = strtolower($_SERVER['HTTP_USER_AGENT']); 
if (strpos($useragent, 'googlebot') !== false){ 
return 'Googlebot'; 
}elseif (strpos($useragent, 'msnbot') !== false){ 
return 'MSNbot'; 
}elseif (strpos($useragent, 'slurp') !== false){ 
return 'Yahoobot'; 
}elseif (strpos($useragent, 'baiduspider') !== false){ 
return 'Baiduspider'; 
}elseif (strpos($useragent, 'sogou') !== false){ 
return 'Sogoubot'; 
}elseif (strpos($useragent,'soso') !== false){ 
return 'Sosobot'; 
}elseif(strpos($useragent,'youdao')!==false) 
{ 
return 'Youdao'; 
} 
else 
{ 
return false; 
} 
} 
?>

3.蜘蛛统计查看文件
<?php 
session_start(); 
require("spilder_config.php"); 
if($_GET['act']=='logout') 
{ 
$_SESSION['ss_sp_admin']='';//清空 
} 
if($_GET['sp_admin_login']) 
{ 
if($_GET['sp_admin_login']==$sp_admin) 
{ 
$_SESSION['ss_sp_admin']=$sp_admin; 
} 
} 
date_default_timezone_set('PRC'); //设置默认时区 
$day_start=strtotime(date("Ymd")."000001");//一天的开始时间 
$day_out=strtotime(date("Ymd")."235959");//一天的结束时间 
$day=3600*24;//一天的时间 
$link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd) or die("服务器连接出错"); 
mysql_select_db($mysql_db,$link) or die('链接数据库出错');//连接数据库 
if($_GET['act']=='del') 
{ 
if($_SESSION['ss_sp_admin']<>'') 
{ 
if($_GET['dt']==0)//清空 
{ 
mysql_query("delete from {$table_prefix}sp_count "); 
} 
$d_time=0; 
if($_GET['dt']==1)//删除30天前 
{ 
$d_time=$day_out-$day*30; 
}elseif($_GET['dt']==2)//删除60天前 
{ 
$d_time=$day_out-$day*60; 
}elseif($_GET['dt']==3)//删除90天前 
{ 
$d_time=$day_out-$day*90; 
}elseif($_GET['dt']==4)//删除180天前 
{ 
$d_time=$day_out-$day*180; 
}elseif($_GET['dt']==5)//删除360天前 
{ 
$d_time=$day_out-$day*360; 
} 
if($d_time>0) 
{ 
mysql_query("delete from {$table_prefix}sp_count where r_time<'$d_time'");//删除数据 
} 
} 
} 
$ss=intval($_GET['ss']); 
if($ss>0)//查看分类统计 
{ 
if($ss==999)//清空分类 
{ 
$_SESSION['ss_ss']=''; 
}else 
{ 
$_SESSION['ss_ss']=$ss; 
} 
} 
$ss=$_SESSION['ss_ss']; 
if($ss==1) 
{ 
$ss='Baiduspider'; 
}elseif($ss==2) 
{ 
$ss='Googlebot'; 
}elseif($ss==3) 
{ 
$ss="MSNbot"; 
}elseif($ss==4) 
{ 
$ss="Yahoobot"; 
}elseif($ss==5) 
{ 
$ss="Sogoubot"; 
}elseif($ss==6) 
{ 
$ss="Sosobot"; 
}elseif($ss==7) 
{ 
$ss=7; 
} 
$t=intval($_GET['t']);//查看时间分类统计 
if($t==0)//时时情况 
{ 
if(empty($_SESSION['ss_ss'])) 
{ 
$sql =" select * from {$table_prefix}sp_count order by id desc ";//最新情况 
$sql2="select count(*) from {$table_prefix}sp_count "; 
}else 
{ 
$sql="select * from {$table_prefix}sp_count where r_name='$ss' order by id desc "; 
$sql2="select count(*) from {$table_prefix}sp_count where r_name='$ss' "; 
} 
$rscount=mysql_query($sql2); 
$rscount=@mysql_fetch_array($rscount); 
$rscount=$rscount[0];//获取总记录数 
$page=intval(trim($_GET['page']));//当前页数 
$pagesize=30;//每页记录数 
$pagecount=ceil($rscount/$pagesize);//获取总页数 
$pageurl=""; 
if($page<=1) 
{ 
$page=1; 
$pageurl.=" 首页 上一页"; 
}else 
{ 
$pageurl .=" <a href='?page=1&ss=".$ss."'>首页</a>  <a href='?ss=".$ss."&page=".($page-1)."'>上一页</a>"; 
} 
if($page>=$pagecount) 
{ 
$page=$pagecount; 
$pageurl .=" 下一页  尾页"; 
}else 
{ 
$pageurl .=" <a href='?ss=".$ss."&page=".($page+1)."'>下一页</a>  <a href='?ss=".$ss."&page=".$pagecount."'>尾页</a>"; 
} 
if($page<=1) 
{ 
$page=1; 
} 
$start_rs=intval(($page-1)*$pagesize);//开始 
$end_rs=intval($page*$pagesize);//结束 
$sql .=" limit {$start_rs},{$end_rs} "; 
} 
if($t==1)//查看今天天统计 
{ 
$s_time=$day_start;//开始时间 
$e_time=$day_out;//结束时间 
$sql="select count(*) as ct,r_name from {$table_prefix}sp_count where r_time between '$s_time' and '$e_time' group by r_name "; 
}elseif($t==2)//查看昨天统计 
{ 
$s_time=$day_start-$day;//开始 
$e_time=$day_out-$day;//结束 
$sql="select count(*) as ct,r_name from {$table_prefix}sp_count where r_time between '$s_time' and '$e_time' group by r_name "; 
}elseif($t==3)//查看前天天的统计 
{ 
$s_time=$day_start-$day*2; 
$e_time=$day_out-$day*2; 
$sql="select count(*) as ct,r_name from {$table_prefix}sp_count where r_time between '$s_time' and '$e_time' group by r_name"; 
}elseif($t==4)//查看七天的统计 
{ 
$s_time=$day_start-$day*7; 
$e_time=$day_out; 
$sql="select count(*) as ct,r_name from {$table_prefix}sp_count where r_time between '$s_time' and '$e_time' group by r_name "; 
} 
elseif($t==5)//查看30天的 
{ 
$s_time=$day_start-$day*30; 
$e_time=$day_out; 
$sql="select count(*) as ct,r_name from {$table_prefix}sp_count where r_time between '$s_time' and '$e_time' group by r_name "; 
}elseif($t==6)//查看90天的统计 
{ 
$s_time=$day_start-$day*90; 
$e_time=$day_out; 
$sql="select count(*) as ct,r_name from {$table_prefix}sp_count where r_time between '$s_time' and '$e_time' group by r_name "; 
} 
$res=mysql_query($sql);// or die("请先安装程序<a href='spilder_install.php'>安装</a>"); 
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>显示蜘蛛记录情况</title> 
<style type="text/css"> 
td{font-size:14px;} 
a,a:link{text-decoration:none; color:#000; } 
a:hover{color:#F00;} 
</style> 
</head> 
<body> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-bottom:6px;"> 
<tr> 
<td height="28" align="center" bgcolor="#66CC00"><h1><a href="http://www.jianlila.com" target="_blank">荐礼啦</a> 蜘蛛查看器</h1></td> 
</tr> 
</table> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td width="65" height="38" bgcolor="#FFFFFF">分类查看</td> 
<td width="403" align="center" bgcolor="#FFFFFF">   
<a href="?ss=999">所有的</a>  
<a href="?ss=1">百度</a>   
<a href="?ss=2">谷歌</a>   
<a href="?ss=3">必应</a>  
<a href="?ss=4">雅虎</a>  
<a href="?ss=5">搜狗</a>   
<a href="?ss=6">搜搜</a>  
<a href="?ss=7">有道</a></td> 
<td width="322" bgcolor="#FFFFFF">  
<a href="?t=0">时时</a>   
<a href="?t=1">今天</a>  
<a href="?t=2">昨天</a>  
<a href="?t=3">前天</a>  
<a href="?t=4">七天</a>  
<a href="?t=4">30天</a>  
<a href="?t=5">90天</a>  
</td> 
</tr> 
</table> 
<?php 
if($_SESSION['ss_sp_admin']==$sp_admin) 
{ 
?> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:12px; margin-bottom:12px;"> 
<tr> 
<td width="208" align="right" bgcolor="#FFFFFF">管理  <a href="?act=logout">退出</a>   </td> 
<td width="585" align="center" bgcolor="#FFFFFF"> 
<a href="?act=del&dt=0" onclick="return confirm('确定清空')">清空</a>   
<a href="?act=del&dt=1" onclick="return confirm('确定删除?')">30天前</a>   
<a href="?act=del&dt=2" onclick="return confirm('确定删除?')">60天前</a>   
<a href="?act=del&dt=3" onclick="return confirm('确定删除?')">90天前</a>    
<a href="?act=del&dt=4" onclick="return confirm('确定删除?')">180天前</a>   
<a href="?act=del&dt=5" onclick="return confirm('确定删除?')">360天前</a></td> 
</tr> 
</table> 
<?php 
} 
?> 
<?php 
if($t==0) 
{ 
?> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px;"> 
<tr> 
<td width="133" align="center" bgcolor="#FFFFFF">蜘蛛</td> 
<td width="217" align="center" bgcolor="#FFFFFF">时间</td> 
<td width="440" align="center" bgcolor="#FFFFFF">地址</td> 
</tr> 
<?php 
while($rs=mysql_fetch_array($res)) 
{ 
?> 
<tr> 
<td align="center" bgcolor="#FFFFFF"><?php echo $rs['r_name'];?></td> 
<td align="center" bgcolor="#FFFFFF"><?php echo date("Y-m-d H:i:s",$rs['r_time']); ?></td> 
<td align="center" bgcolor="#FFFFFF"><a href="<?php echo $rs['r_url'];?>" target="_blank"> <?php echo $rs['r_url'];?></a></td> 
</tr> 
<?php 
} 
?> 
</table> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:20px; margin-bottom:20px;"> 
<tr> 
<td align="center" bgcolor="#FFFFFF"><?php echo $pageurl;?></td> 
</tr> 
</table> 
<?php 
}else{ 
?> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px;"> 
<tr> 
<td width="219" align="center" bgcolor="#FFFFFF">蜘蛛</td> 
<td width="574" align="center" bgcolor="#FFFFFF">统计</td> 
</tr> 
<?php 
while($rs=mysql_fetch_array($res)) 
{ 
?> 
<tr> 
<td align="center" bgcolor="#FFFFFF"><?php echo $rs['r_name'] ?></td> 
<td align="center" bgcolor="#FFFFFF"><?php echo $rs['ct'];?></td> 
</tr> 
<?php 
} 
?> 
</table> 
<?php 
} 
?> 
<table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px;"> 
<tr> 
<td align="center" bgcolor="#FFFFFF">友情链接:<a href="http://www.jianlila.com" target="_blank">荐礼啦</a> <a href="http://www.aiwobama.com" target="_blank">爱我爸妈</a> <a href="http://www.heikediguo.net">黑客帝国</a></td> 
</tr> 
</table> 
</body> 
</html>
PHP 相关文章推荐
自定义PHP分页函数
Oct 09 PHP
加强版phplib的DB类
Mar 31 PHP
PHP DataGrid 实现代码
Aug 12 PHP
php小偷相关截取函数备忘
Nov 28 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
学习php开源项目的源码指南
Dec 21 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
Oct 18 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 #PHP
php中去除所有js,html,css代码
Oct 12 #PHP
PHP入门学习笔记之一
Oct 12 #PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 #PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 #PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 #PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 #PHP
You might like
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
jQuery响应enter键的实现思路
2014/04/18 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
javascript实现日历效果
2019/06/17 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
解决Python requests 报错方法集锦
2017/03/19 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
python实现最短路径的实例方法
2020/07/19 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
Tretorn美国官网:瑞典外套和鞋类品牌,抵御风雨
2018/07/19 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
数控专业推荐信范文
2013/12/02 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
打架检讨书范文
2015/01/27 职场文书
导游词之西递宏村
2019/12/10 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
MySQL Server 层四个日志
2022/03/31 MySQL