发款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 相关文章推荐
Codeigniter发送邮件的方法
Mar 19 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 PHP
php变量与字符串的增删改查操作示例
May 07 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
如何在一个页面显示多个百度地图
2013/04/07 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
计算机应用与科学个人的自我评价
2013/11/15 职场文书
商务主管岗位职责
2013/12/08 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Spring整合Mybatis的全过程
2021/06/28 Java/Android