/** * 入口 * * @author mrmsl <*****@*****.**> * @date 2012-09-27 17:26:23 * @lastmodify 2013-01-22 11:02:32 by mrmsl * * @return void 无返回值 */ public function indexAction() { $module = Filter::get('module', 'get'); //模块 $error = ''; if (!APP_DEBUG) { //非调试模式 if (!REFERER_PAGER) { $error = L('REFERER_PAGER,IS_EMPTY'); } elseif (strpos(REFERER_PAGER, WEB_SITE_URL) === false) { $error = L('REFERER_PAGER') . '(' . REFERER_PAGER . ')' . L('IS_EMPTY'); } } if (!$error) { if (!$module) { $error = 'module' . L('IS_EMPTY'); } elseif (!in_array($module, $this->_verifycode_module)) { $error = 'module not in (' . join(',', $this->_verifycode_module) . ')'; } else { $verifycode_setting = get_verifycode_setting($module); //验证码设置 //未开启验证码 if (!$verifycode_setting['enable']) { $default_setting = get_verifycode_setting('sys', 'enable'); //默认设置 $error = L('NOT_HAS,TURN_ON') . "(module:{$verifycode_setting['enable']}|sys:{$default_setting})"; } } } if ($error) { //有错误 $log = get_method_line(__METHOD__, __LINE__, LOG_VERIFYCODE_ERROR) . L('VERIFY_CODE') . "({$module})" . $error; trigger_error($log); $exit = true; } elseif (!check_verifycode_limit($module, 'refresh')) { //刷新次数限制 $exit = true; } if (!empty($exit)) { header('Content-type: image/png'); readfile(IMGCACHE_PATH . 'common/images/verifycode_error.png'); exit; } $width = $verifycode_setting['width']; //宽 $height = $verifycode_setting['height']; //高 $length = $verifycode_setting['length']; //字母长 $type = $verifycode_setting['type']; //类型 $img = new Verifycode(); $img->buildVerifyImage($verifycode_setting['length'], $verifycode_setting['type'], $verifycode_setting['width'], $verifycode_setting['height']); }
/** * 验证验证码是否正确 * * @author mrmsl <*****@*****.**> * @date 2012-07-13 16:45:47 * @lastmodify 2013-01-22 17:08:59 by mrmsl * * @param string $code 验证码 * @param string $module 验证码模块 * * @return mixed true正确,否则返回提示信息 */ function check_verifycode($code, $module) { static $_checked = array(); if (isset($_checked[$module])) { //已经验证过 return $_checked[$module]; } elseif (!check_verifycode_limit($module)) { //错误次数限制 $result = false; } else { $session = session(SESSION_VERIFY_CODE); $verifycode_setting = get_verifycode_setting($module); $verifycode_order = $verifycode_setting['order']; if (!$verifycode_setting['case']) { //不区分大小写 $code = strtolower($code); $session = strtolower($session); } if (!is_numeric($verifycode_order)) { //非数字,$verifycode_order即为验证码 $result = $code == $verifycode_order; } elseif (!$verifycode_order) { //验证码顺序 $result = $code == $session; } elseif (($len = strlen($verifycode_order)) != strlen($code)) { //输入长度与顺序长度一致,避免abcd => abcde也通过 $result = false; } else { for ($i = 0; $i < $len; $i++) { $n = $verifycode_order[$i] - 1; $result = isset($code[$i]) && isset($session[$n]) && $code[$i] == $session[$n]; } } } $_checked[$module] = $result; return $result; }