服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - PHP教程 - 发款php蜘蛛统计插件只要有mysql就可用

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

2019-11-11 13:57php教程网 PHP教程

有时候我们为了看一下蜘蛛爬行的情况,不得不对日志进行大量的分析,由此想做一款插件可以记录蜘蛛的情况。在第一次做的时候,只是记录下蜘蛛的爬行次数,不大好分析。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!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.蜘蛛记录文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?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.蜘蛛统计查看文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<?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
}
?>
</body>
</html>

延伸 · 阅读

精彩推荐
  • PHP教程用PHP实现递归循环每一个目录

    用PHP实现递归循环每一个目录

    很多时候我们要遍历一个文件夹里面的所有目录,列出里面所有的文件,PHP本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写...

    php教程网4852019-11-06
  • PHP教程thinkPHP框架实现的简单计算器示例

    thinkPHP框架实现的简单计算器示例

    这篇文章主要介绍了thinkPHP框架实现的简单计算器,结合实例形式分析了基于thinkPHP框架的用户登陆、数值计算、数据库读写、历史记录保存等功能相关实现...

    luckymaoyy1412019-07-22
  • PHP教程PHP PDOStatement::fetchObject讲解

    PHP PDOStatement::fetchObject讲解

    今天小编就为大家分享一篇关于PHP PDOStatement::fetchObject讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    php参考手册5102019-06-24
  • PHP教程ThinkPHP框架实现定时执行任务的两种方法分析

    ThinkPHP框架实现定时执行任务的两种方法分析

    这篇文章主要介绍了ThinkPHP框架实现定时执行任务的两种方法,结合实例形式分析了2种被动执行定时任务的相关操作技巧与注意事项,需要的朋友可以参考下...

    Zhihua_W3192019-09-08
  • PHP教程浅谈PHP无限极分类原理

    浅谈PHP无限极分类原理

    这篇文章主要介绍了PHP无限极分类原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编...

    yangzailu4672019-05-31
  • PHP教程PHP的mysqli_set_charset()函数讲解

    PHP的mysqli_set_charset()函数讲解

    今天小编就为大家分享一篇关于PHP的mysqli_set_charset()函数讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编...

    php参考手册4402019-06-29
  • PHP教程PHP获取HTTP body内容的方法

    PHP获取HTTP body内容的方法

    今天小编就为大家分享一篇PHP获取HTTP body内容的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    nomandia4712019-07-08
  • PHP教程php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)

    php 网页播放器用来播放在线视频的代码(自动判断并选择视频文

    其实这里的php 视频播放代码基本上常见的视频格式都支持,用正则匹配文件扩展名,并根据文件扩展名的不同调用相应的在线播放器代码。 ...

    php教程网4452019-10-31