WordPress生成网站访问日志和蜘蛛爬行分析日志

一、建立mylogs.php文件

避免functions.php过于臃肿,我们单独把蜘蛛爬行分析页面的代码放在一个php文件中,命名为:mylogs.php,放在当前主题目录的inc文件夹下。
在functions.php中引入mylogs.php:

  1. require get_template_directory() . '/inc/mylogs.php';

二、生成网站日志

  1. <?php
  2. //保存日志文件至mylogs.txt
  3. make_log_file();
  4. function make_log_file(){
  5.         //log文件名
  6. 	$filename = 'mylogs.txt'; 
  7.         //去除rc-ajax评论以及cron机制访问记录
  8. 	if(strstr($_SERVER["REQUEST_URI"],"rc-ajax")== false 
  9. 		&& strstr($_SERVER["REQUEST_URI"],"wp-cron.php")== false ) {
  10. 		$word .= date('mdHis',$_SERVER['REQUEST_TIME'] + 3600*8) . " ";
  11.                 //访问页面
  12. 		$word .= $_SERVER["REQUEST_URI"] ." ";
  13.                 //协议
  14. 		$word .= $_SERVER['SERVER_PROTOCOL'] ." ";
  15.                 //方法,POST OR GET
  16. 		$word .= $_SERVER['REQUEST_METHOD'] . " ";
  17. 		//$word .= $_SERVER['HTTP_ACCEPT'] . " ";
  18.                 //获得浏览器信息
  19. 		$word .= getbrowser(). " ";
  20.                 //传递参数
  21. 		$word .= "[". $_SERVER['QUERY_STRING'] . "] ";
  22.                 //跳转地址
  23. 		$word .= $_SERVER['HTTP_REFERER'] . " ";
  24.                 //获取IP
  25. 		$word .= getIP() . " ";
  26.         $word .= "\n";
  27.         $day = date('md',$_SERVER['REQUEST_TIME'] + 3600*8);    
  28.         if (file_exists($filename)) {
  29.         $fh = fopen($filename, "r");
  30.         $data = fread($fh, 10);
  31.         if(substr($data,0,4) == $day) 
  32. 	    $fh = fopen($filename, "a");
  33.         else 
  34. 	    $fh = fopen($filename, "w");
  35.         fwrite($fh, $word);    
  36.         fclose($fh);
  37. 	}
  38.    //endif;
  39. }
  40. }
  41. //获取IP地址,网上现成代码
  42. function getIP() //get ip address
  43.     {
  44.         if (getenv('HTTP_CLIENT_IP')) 
  45.         {
  46.             $ip = getenv('HTTP_CLIENT_IP');
  47.         } 
  48.         else if (getenv('HTTP_X_FORWARDED_FOR')) 
  49.         {
  50.             $ip = getenv('HTTP_X_FORWARDED_FOR');
  51.         } 
  52.         else if (getenv('REMOTE_ADDR')) 
  53.         {
  54.             $ip = getenv('REMOTE_ADDR');
  55.         } 
  56.         else 
  57.         {
  58.             $ip = $_SERVER['REMOTE_ADDR'];
  59.         }
  60.         return $ip;
  61.     }
  62. //获取浏览器信息,移动端,平板电脑数据还未加上。
  63.  function getbrowser()
  64.     {
  65.         $Agent = $_SERVER['HTTP_USER_AGENT'];
  66.         $browser = '';
  67.         $browserver = '';
  68.  
  69.         if(ereg('Mozilla', $Agent) && ereg('Chrome', $Agent))
  70.         {
  71.             $temp = explode('(', $Agent);
  72.             $Part = $temp[2];
  73.             $temp = explode('/', $Part);
  74.             $browserver = $temp[1];
  75.             $temp = explode(' ', $browserver);
  76.             $browserver = $temp[0];
  77.             $browserver = $browserver;
  78.             $browser = 'Chrome';
  79.         }
  80. 		if(ereg('Mozilla', $Agent) && ereg('Firefox', $Agent))
  81.         {
  82.             $temp = explode('(', $Agent);
  83.             $Part = $temp[1];
  84.             $temp = explode('/', $Part);
  85.             $browserver = $temp[2];
  86.             $temp = explode(' ', $browserver);
  87.             $browserver = $temp[0];
  88.             $browserver = $browserver;
  89.             $browser = 'Firefox';
  90.         }
  91.         if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) 
  92.         {
  93.             $temp = explode('(', $Agent);
  94.             $Part = $temp[1];
  95.             $temp = explode(')', $Part);
  96.             $browserver = $temp[1];
  97.             $temp = explode(' ', $browserver);
  98.             $browserver = $temp[2];
  99.             $browserver = $browserver;
  100.             $browser = 'Opera';
  101.         }
  102.         if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent))
  103.         {
  104.             $temp = explode('(', $Agent);
  105.             $Part = $temp[1];
  106.             $temp = explode(';', $Part);
  107.             $Part = $temp[1];
  108.             $temp = explode(' ', $Part);
  109.             $browserver = $temp[2];
  110.             $browserver = $browserver;
  111.             $browser = 'Internet Explorer';
  112.         }
  113.         if($browser != '')
  114.         {
  115.             $browseinfo = $browser.' '.$browserver;
  116.         } 
  117.         else
  118.         {
  119.             $browseinfo = $_SERVER['HTTP_USER_AGENT'];
  120.         }
  121.         return $browseinfo;
  122.     }
  123. ?>

这样,在你的站点根目录上就会生成mylogs.txt文件,你通过http://你的域名/mylogs.txt可以直接访问。这样的日志要比chinaz这种统计工具生成的日志精准的多,你可以通过日志得知哪些人访问哪些文件,哪些蜘蛛爬行过了等等信息。

你可以点击查看511遇见的网站日志: http://www.511yj.com/mylogs.txt

三、生成日志分析代码

下面这段代码的作用就是读取上面的mylogs.txt,通过正则匹配蜘蛛特征标志然后进行统计,并显示结果。创建短代码spiderlogs,该段代码可用参数text,默认为yes,生成文本描述+圆饼图,如只需要显示圆饼图,则设置text为no即可。同样是放入mylogs.php中。
特别声明,以上文字是复制的,其实我们分析代码,看看最后在生成圆饼图时是用了Google Chart API在线生成,现在由于.......其实你懂得,是无法链接和生成的,所以我们在复制源码时要删掉这段,否则你的网页打开会很慢的。
由于原代码很长,所以就不复制了,你可以直接下载文件mylogs.php在你的functions.php中引入就ok了。
百度网盘下载

四、建立蜘蛛爬行分析页面

登录Wordpress后台管理-页面-建立新页面-输入[ spiderlogs ] ,保存你的页面就可以了。输入时spiderlogs两边没有空格。其实你在wordpress网站发布的任何一篇文章内引入以上代码都能显示蜘蛛爬行分析页面。


发布日期:

所属分类: Wordpress 综合 标签: