Discuz教程网

PHP蜘蛛统计插件只要有mysql就可用

[复制链接]
authicon dly 发表于 2011-8-31 12:54:38 | 显示全部楼层 |阅读模式
于是昨天便认真的做了一下,功能多一点,可以对各种搜索引擎统计分析。可以在多个时间段进行查看。其实代码很简单,为了更简洁些,代码压缩到6k.分为6个文件
1.安装程序 spilder_install.php
代码如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>安装插件</title>
  6. </head>
  7. <?php
  8. if($_POST['act']=='install')//如果是安装
  9. {
  10. $mysql_host=trim($_POST['mysql_host']);//获取主机
  11. $mysql_user=trim($_POST['mysql_user']);//获取用户名
  12. $mysql_pwd=trim($_POST['mysql_pwd']);//获取密码
  13. $mysql_db=trim($_POST['mysql_db']);//数据库
  14. $table_prefix=trim($_POST['table_prefix']);//获取前缀
  15. if($link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd))
  16. {
  17. echo "连接服务器成功!.................<br>";
  18. }
  19. else
  20. {
  21. echo "<script>alert('链接出错!请检查数据库服务器配置!');history.go(-1);</script>";
  22. }
  23. if(mysql_select_db($mysql_db,$link))
  24. {
  25. echo "连接数据库成功!.............<br>正在创建表................<br>";
  26. }
  27. $sql="CREATE TABLE `spilder_sp_count` (
  28. `id` bigint(20) NOT NULL auto_increment,
  29. `r_time` int(11) NOT NULL,
  30. `r_name` varchar(50) NOT NULL,
  31. `r_url` varchar(200) NOT NULL,
  32. PRIMARY KEY (`id`)
  33. ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=4 ;
  34. ";
  35. mysql_query("DROP TABLE IF EXISTS `".$table_prefix."sp_count`;");//删除已存在
  36. $sql=str_replace("spilder_",$table_prefix,$sql);//替换前缀
  37. if(mysql_query($sql))
  38. {
  39. echo "表创建成功!正在写入文件";
  40. }
  41. $f=file_get_contents("spilder_config.php");//获取配置内容
  42. $f=str_replace(" ","",$f);//去除空格
  43. $f=preg_replace("/mysql_host=.*;/iUs","mysql_host='{$mysql_host}';",$f);
  44. $f=preg_replace("/mysql_user=.*;/iUs","mysql_user='{$mysql_user}';",$f);
  45. $f=preg_replace("/mysql_pwd=.*;/iUs","mysql_pwd='{$mysql_pwd}';",$f);
  46. $f=preg_replace("/mysql_db=.*;/iUs","mysql_db='{$mysql_db}';",$f);
  47. $f=preg_replace("/table_prefix=.*;/iUs","table_prefix='{$table_prefix}';",$f);
  48. $f=preg_replace("/sp_admin=.*;/iUs","sp_admin='{$sp_admin}';",$f);
  49. file_put_contents("spilder_config.php",$f);
  50. file_put_contents("isinstall.txt","OK");
  51. echo "恭喜!荐礼啦蜘蛛统计程序安装成功 <a href="index.php">查看</a>";
  52. exit();
  53. }
  54. ?>
  55. <body>
  56. <table width="600" border="0" align="center">
  57. <tr>
  58. <td align="center">荐礼啦 蜘蛛统计查看器</td>
  59. </tr>
  60. </table>
  61. <form method="post">
  62. <table width="600" border="0" align="center" cellspacing="0">
  63. <tr>
  64. <td width="280"> </td>
  65. <td width="610">开始安装</td>
  66. </tr>
  67. <tr>
  68. <td align="right">服务器:</td>
  69. <td><input name="mysql_host" type="text" id="mysql_host" value="localhost" />
  70. (一般不用改)</td>
  71. </tr>
  72. <tr>
  73. <td align="right">用户名:</td>
  74. <td><input type="text" name="mysql_user" id="mysql_user" /></td>
  75. </tr>
  76. <tr>
  77. <td align="right">密码:</td>
  78. <td><input type="password" name="mysql_pwd" id="mysql_pwd" /></td>
  79. </tr>
  80. <tr>
  81. <td align="right">数据库:</td>
  82. <td><input type="text" name="mysql_db" id="mysql_db" /></td>
  83. </tr>
  84. <tr>
  85. <td align="right">表前缀:</td>
  86. <td><input name="table_prefix" type="text" id="table_prefix" value="spilder_" />
  87. <input name="act" type="hidden" id="act" value="install" /></td>
  88. </tr>
  89. <tr>
  90. <td align="right">管理密码:</td>
  91. <td><input type="password" name="sp_admin" id="sp_admin" /></td>
  92. </tr>
  93. <tr>
  94. <td align="right"> </td>
  95. <td><input type="submit" name="button" id="button" value="安装" /></td>
  96. </tr>
  97. </table>
  98. </form>
  99. </body>
  100. </html>
复制代码

2.蜘蛛记录文件

代码如下:


  1. <?php
  2. require("spilder_config.php");//调用配置文件
  3. $link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd) or die("服务器连接出错");//链接数据库
  4. mysql_select_db($mysql_db,$link) or die('数据库连接出错');
  5. $searchbot = get_naps_bot();
  6. if($searchbot)
  7. {
  8. date_default_timezone_set('PRC'); //设置默认时区
  9. $r_time=strtotime(date("Y-m-d H:i:s"));//最后更新时间
  10. $ServerName = $_SERVER["SERVER_NAME"] ;
  11. $ServerPort = $_SERVER["SERVER_PORT"] ;
  12. $ScriptName = $_SERVER["SCRIPT_NAME"] ;
  13. $QueryString = $_SERVER["QUERY_STRING"] ;
  14. $url="http://".$ServerName ;
  15. If ($ServerPort != "80")
  16. {
  17. $url = $url.":".$ServerPort ;
  18. }
  19. $url=$url.$ScriptName ;
  20. If ($QueryString !="")
  21. {
  22. $url=$url."?".$QueryString ;
  23. }
  24. //$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  25. $GLOBALS['db']->db_query("insert into {$table_prefix}sp_count(r_time,r_name,r_url) values('$r_time','$searchbot','$url')");
  26. }
  27. function get_naps_bot()
  28. {
  29. $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
  30. if (strpos($useragent, 'googlebot') !== false){
  31. return 'Googlebot';
  32. }elseif (strpos($useragent, 'msnbot') !== false){
  33. return 'MSNbot';
  34. }elseif (strpos($useragent, 'slurp') !== false){
  35. return 'Yahoobot';
  36. }elseif (strpos($useragent, 'baiduspider') !== false){
  37. return 'Baiduspider';
  38. }elseif (strpos($useragent, 'sogou') !== false){
  39. return 'Sogoubot';
  40. }elseif (strpos($useragent,'soso') !== false){
  41. return 'Sosobot';
  42. }elseif(strpos($useragent,'youdao')!==false)
  43. {
  44. return 'Youdao';
  45. }
  46. else
  47. {
  48. return false;
  49. }
  50. }
  51. ?>

  52. 3.蜘蛛统计查看文件

  53. 代码如下:

  54. <?php
  55. session_start();
  56. require("spilder_config.php");
  57. if($_GET['act']=='logout')
  58. {
  59. $_SESSION['ss_sp_admin']='';//清空
  60. }
  61. if($_GET['sp_admin_login'])
  62. {
  63. if($_GET['sp_admin_login']==$sp_admin)
  64. {
  65. $_SESSION['ss_sp_admin']=$sp_admin;
  66. }
  67. }
  68. date_default_timezone_set('PRC'); //设置默认时区
  69. $day_start=strtotime(date("Ymd")."000001");//一天的开始时间
  70. $day_out=strtotime(date("Ymd")."235959");//一天的结束时间
  71. $day=3600*24;//一天的时间
  72. $link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd) or die("服务器连接出错");
  73. mysql_select_db($mysql_db,$link) or die('链接数据库出错');//连接数据库
  74. if($_GET['act']=='del')
  75. {
  76. if($_SESSION['ss_sp_admin']<>'')
  77. {
  78. if($_GET['dt']==0)//清空
  79. {
  80. mysql_query("delete from {$table_prefix}sp_count ");
  81. }
  82. $d_time=0;
  83. if($_GET['dt']==1)//删除30天前
  84. {
  85. $d_time=$day_out-$day*30;
  86. }elseif($_GET['dt']==2)//删除60天前
  87. {
  88. $d_time=$day_out-$day*60;
  89. }elseif($_GET['dt']==3)//删除90天前
  90. {
  91. $d_time=$day_out-$day*90;
  92. }elseif($_GET['dt']==4)//删除180天前
  93. {
  94. $d_time=$day_out-$day*180;
  95. }elseif($_GET['dt']==5)//删除360天前
  96. {
  97. $d_time=$day_out-$day*360;
  98. }
  99. if($d_time>0)
  100. {
  101. mysql_query("delete from {$table_prefix}sp_count where r_time<'$d_time'");//删除数据
  102. }
  103. }
  104. }
  105. $ss=intval($_GET['ss']);
  106. if($ss>0)//查看分类统计
  107. {
  108. if($ss==999)//清空分类
  109. {
  110. $_SESSION['ss_ss']='';
  111. }else
  112. {
  113. $_SESSION['ss_ss']=$ss;
  114. }
  115. }
  116. $ss=$_SESSION['ss_ss'];
  117. if($ss==1)
  118. {
  119. $ss='Baiduspider';
  120. }elseif($ss==2)
  121. {
  122. $ss='Googlebot';
  123. }elseif($ss==3)
  124. {
  125. $ss="MSNbot";
  126. }elseif($ss==4)
  127. {
  128. $ss="Yahoobot";
  129. }elseif($ss==5)
  130. {
  131. $ss="Sogoubot";
  132. }elseif($ss==6)
  133. {
  134. $ss="Sosobot";
  135. }elseif($ss==7)
  136. {
  137. $ss=7;
  138. }
  139. $t=intval($_GET['t']);//查看时间分类统计
  140. if($t==0)//时时情况
  141. {
  142. if(empty($_SESSION['ss_ss']))
  143. {
  144. $sql =" select * from {$table_prefix}sp_count order by id desc ";//最新情况
  145. $sql2="select count(*) from {$table_prefix}sp_count ";
  146. }else
  147. {
  148. $sql="select * from {$table_prefix}sp_count where r_name='$ss' order by id desc ";
  149. $sql2="select count(*) from {$table_prefix}sp_count where r_name='$ss' ";
  150. }
  151. $rscount=mysql_query($sql2);
  152. $rscount=@mysql_fetch_array($rscount);
  153. $rscount=$rscount[0];//获取总记录数
  154. $page=intval(trim($_GET['page']));//当前页数
  155. $pagesize=30;//每页记录数
  156. $pagecount=ceil($rscount/$pagesize);//获取总页数
  157. $pageurl="";
  158. if($page<=1)
  159. {
  160. $page=1;
  161. $pageurl.=" 首页 上一页";
  162. }else
  163. {
  164. $pageurl .=" <a href='?page=1&ss=".$ss."'>首页</a> <a href='?ss=".$ss."&page=".($page-1)."'>上一页</a>";
  165. }
  166. if($page>=$pagecount)
  167. {
  168. $page=$pagecount;
  169. $pageurl .=" 下一页 尾页";
  170. }else
  171. {
  172. $pageurl .=" <a href='?ss=".$ss."&page=".($page+1)."'>下一页</a> <a href='?ss=".$ss."&page=".$pagecount."'>尾页</a>";
  173. }
  174. if($page<=1)
  175. {
  176. $page=1;
  177. }
  178. $start_rs=intval(($page-1)*$pagesize);//开始
  179. $end_rs=intval($page*$pagesize);//结束
  180. $sql .=" limit {$start_rs},{$end_rs} ";
  181. }
  182. if($t==1)//查看今天天统计
  183. {
  184. $s_time=$day_start;//开始时间
  185. $e_time=$day_out;//结束时间
  186. $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 ";
  187. }elseif($t==2)//查看昨天统计
  188. {
  189. $s_time=$day_start-$day;//开始
  190. $e_time=$day_out-$day;//结束
  191. $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 ";
  192. }elseif($t==3)//查看前天天的统计
  193. {
  194. $s_time=$day_start-$day*2;
  195. $e_time=$day_out-$day*2;
  196. $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";
  197. }elseif($t==4)//查看七天的统计
  198. {
  199. $s_time=$day_start-$day*7;
  200. $e_time=$day_out;
  201. $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 ";
  202. }
  203. elseif($t==5)//查看30天的
  204. {
  205. $s_time=$day_start-$day*30;
  206. $e_time=$day_out;
  207. $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 ";
  208. }elseif($t==6)//查看90天的统计
  209. {
  210. $s_time=$day_start-$day*90;
  211. $e_time=$day_out;
  212. $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 ";
  213. }
  214. $res=mysql_query($sql);// or die("请先安装程序<a href='spilder_install.php'>安装</a>");
  215. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  216. <html xmlns="http://www.w3.org/1999/xhtml">
  217. <head>
  218. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  219. <title>显示蜘蛛记录情况</title>
  220. <style type="text/css">
  221. td{font-size:14px;}
  222. a,a:link{text-decoration:none; color:#000; }
  223. a:hover{color:#F00;}
  224. </style>
  225. </head>
  226. <body>
  227. <table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-bottom:6px;">
  228. <tr>
  229. <td height="28" align="center" bgcolor="#66CC00"><h1><a href="http://www.jianlila.com" target="_blank">荐礼啦</a> 蜘蛛查看器</h1></td>
  230. </tr>
  231. </table>
  232. <table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC">
  233. <tr>
  234. <td width="65" height="38" bgcolor="#FFFFFF">分类查看</td>
  235. <td width="403" align="center" bgcolor="#FFFFFF">
  236. <a href="?ss=999">所有的</a>
  237. <a href="?ss=1">百度</a>
  238. <a href="?ss=2">谷歌</a>
  239. <a href="?ss=3">必应</a>
  240. <a href="?ss=4">雅虎</a>
  241. <a href="?ss=5">搜狗</a>
  242. <a href="?ss=6">搜搜</a>
  243. <a href="?ss=7">有道</a></td>
  244. <td width="322" bgcolor="#FFFFFF">
  245. <a href="?t=0">时时</a>
  246. <a href="?t=1">今天</a>
  247. <a href="?t=2">昨天</a>
  248. <a href="?t=3">前天</a>
  249. <a href="?t=4">七天</a>
  250. <a href="?t=4">30天</a>
  251. <a href="?t=5">90天</a>
  252. </td>
  253. </tr>
  254. </table>
  255. <?php
  256. if($_SESSION['ss_sp_admin']==$sp_admin)
  257. {
  258. ?>
  259. <table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:12px; margin-bottom:12px;">
  260. <tr>
  261. <td width="208" align="right" bgcolor="#FFFFFF">管理 <a href="?act=logout">退出</a> </td>
  262. <td width="585" align="center" bgcolor="#FFFFFF">
  263. <a href="?act=del&dt=0" onclick="return confirm('确定清空')">清空</a>
  264. <a href="?act=del&dt=1" onclick="return confirm('确定删除?')">30天前</a>
  265. <a href="?act=del&dt=2" onclick="return confirm('确定删除?')">60天前</a>
  266. <a href="?act=del&dt=3" onclick="return confirm('确定删除?')">90天前</a>
  267. <a href="?act=del&dt=4" onclick="return confirm('确定删除?')">180天前</a>
  268. <a href="?act=del&dt=5" onclick="return confirm('确定删除?')">360天前</a></td>
  269. </tr>
  270. </table>
  271. <?php
  272. }
  273. ?>
  274. <?php
  275. if($t==0)
  276. {
  277. ?>
  278. <table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px;">
  279. <tr>
  280. <td width="133" align="center" bgcolor="#FFFFFF">蜘蛛</td>
  281. <td width="217" align="center" bgcolor="#FFFFFF">时间</td>
  282. <td width="440" align="center" bgcolor="#FFFFFF">地址</td>
  283. </tr>
  284. <?php
  285. while($rs=mysql_fetch_array($res))
  286. {
  287. ?>
  288. <tr>
  289. <td align="center" bgcolor="#FFFFFF"><?php echo $rs['r_name'];?></td>
  290. <td align="center" bgcolor="#FFFFFF"><?php echo date("Y-m-d H:i:s",$rs['r_time']); ?></td>
  291. <td align="center" bgcolor="#FFFFFF"><a href="<?php echo $rs['r_url'];?>" target="_blank"> <?php echo $rs['r_url'];?></a></td>
  292. </tr>
  293. <?php
  294. }
  295. ?>
  296. </table>
  297. <table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:20px; margin-bottom:20px;">
  298. <tr>
  299. <td align="center" bgcolor="#FFFFFF"><?php echo $pageurl;?></td>
  300. </tr>
  301. </table>
  302. <?php
  303. }else{
  304. ?>
  305. <table width="800" border="0" align="center" cellspacing="1" bgcolor="#CCCCCC" style="margin-top:6px;">
  306. <tr>
  307. <td width="219" align="center" bgcolor="#FFFFFF">蜘蛛</td>
  308. <td width="574" align="center" bgcolor="#FFFFFF">统计</td>
  309. </tr>
  310. <?php
  311. while($rs=mysql_fetch_array($res))
  312. {
  313. ?>
  314. <tr>
  315. <td align="center" bgcolor="#FFFFFF"><?php echo $rs['r_name'] ?></td>
  316. <td align="center" bgcolor="#FFFFFF"><?php echo $rs['ct'];?></td>
  317. </tr>
  318. <?php
  319. }
  320. ?>
  321. </table>
  322. <?php
  323. }
  324. ?>
  325. </body>
  326. </html>
复制代码








上一篇:纯PHP打造的tab选项卡效果代码(不用js)
下一篇:利用PHP+mysql来做一个功能强大的在线计算器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 18:35

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表