You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.5 KiB
PHTML
41 lines
1.5 KiB
PHTML
5 years ago
|
<?php
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||
|
// +----------------------------------------------------------------------
|
||
|
// | Author: liu21st <liu21st@gmail.com>
|
||
|
// +----------------------------------------------------------------------
|
||
|
namespace Behavior;
|
||
|
/**
|
||
|
* 机器人检测
|
||
|
* @author liu21st <liu21st@gmail.com>
|
||
|
*/
|
||
|
class RobotCheckBehavior {
|
||
|
|
||
|
public function run(&$params) {
|
||
|
// 机器人访问检测
|
||
|
if(C('LIMIT_ROBOT_VISIT',null,true) && self::isRobot()) {
|
||
|
// 禁止机器人访问
|
||
|
exit('Access Denied');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static private function isRobot() {
|
||
|
static $_robot = null;
|
||
|
if(is_null($_robot)) {
|
||
|
$spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
|
||
|
$browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';
|
||
|
if(preg_match("/($browsers)/", $_SERVER['HTTP_USER_AGENT'])) {
|
||
|
$_robot = false ;
|
||
|
} elseif(preg_match("/($spiders)/", $_SERVER['HTTP_USER_AGENT'])) {
|
||
|
$_robot = true;
|
||
|
} else {
|
||
|
$_robot = false;
|
||
|
}
|
||
|
}
|
||
|
return $_robot;
|
||
|
}
|
||
|
}
|