function defender($ret = false) { $info = Request::info(); if (self::$ip) { if (in_array($info['ip'], self::$ip)) { $hit['ip'] =& $info['ip']; goto block; } } if (self::$ajax) { var_dump($info); if (!$info['ajax']) { $hit['ajax'] =& $info['ajax']; goto block; } } if (self::$refer) { while (list($k, $v) = each(self::$refer)) { if (stripos($info['refer'], $v) !== false) { $hit['refer'] =& $info['refer']; goto block; } } } if (self::$session) { $session = Request::session(); while (list($k, $v) = each(self::$session)) { if (!isset($session[$v])) { $hit['session'] = $v; goto block; } } } if (self::$cookie) { $cookie = Request::cookie(); while (list($k, $v) = each(self::$cookie)) { if (!isset($cookie[$v])) { $hit['cookie'] = $v; goto block; } } } if (self::$post) { $post = Request::post(); while (list($k, $v) = each(self::$post)) { if (!isset($post[$v])) { $hit['post'] = $v; goto block; } } } if (self::$get) { $get = Request::get(); while (list($k, $v) = each(self::$get)) { if (!isset($get[$v])) { $hit['get'] = $v; goto block; } } } if (self::$frequency) { $ssid = 'frequency'; $data = json_decode(session_get($ssid), 1); $data[$ssid][] = APP_START_TIME; list($k, $v) = each(self::$frequency); $size = count($data[$ssid]); if ($size > $v) { $sec = APP_START_TIME - $data[$ssid][$size - $v]; if ($sec < $k) { $data['block'] = APP_START_TIME + self::$blockTime; ///超出限制 } if ($size > ($k + 1) * ($v + 1)) { unset($data[$ssid]); } } if (isset($data['block'])) { if ($data['block'] < APP_START_TIME) { unset($data['block']); } else { session_set($ssid, $data); $t = intval($data['block'] - APP_START_TIME); $this->frequencyBlock($t); exit; } } session_set($ssid, $data); } block: if (isset($hit)) { if ($ret) { return $hit; } else { $this->block($hit); } } else { return null; } }