图片验证码优化
parent
ddacccd634
commit
a5c41c71af
|
|
@ -94,7 +94,7 @@ function GetUrlHost($url)
|
|||
}
|
||||
|
||||
// 判断是否是双后缀
|
||||
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev)\.cn$/';
|
||||
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev|co)\.(cn|nz)$/';
|
||||
if(($n > 2) && preg_match($preg, $host))
|
||||
{
|
||||
// 双后缀取后3位
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ namespace app\service;
|
|||
|
||||
use think\Db;
|
||||
use think\facade\Hook;
|
||||
use app\service\UserService;
|
||||
|
||||
/**
|
||||
* 资源服务层
|
||||
|
|
@ -672,5 +673,28 @@ class ResourcesService
|
|||
'application/x-zip-compressed',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户唯一id
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2021-04-15
|
||||
* @desc 未登录取[uuid]前端传过来的uuid、已登录取[用户id]、都没有则返回空字符串
|
||||
*/
|
||||
public static function UserUniqueId()
|
||||
{
|
||||
// 取参数uuid、默认空
|
||||
$uid = input('uuid', '');
|
||||
|
||||
// 用户信息
|
||||
$user = UserService::LoginUserInfo();
|
||||
if(!empty($user) && !empty($user['id']))
|
||||
{
|
||||
$uid = $user['id'];
|
||||
}
|
||||
|
||||
return empty($uid) ? '' : md5($uid);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -19,7 +19,7 @@ return [
|
|||
// 应用地址
|
||||
'app_host' => '',
|
||||
// 应用调试模式
|
||||
'app_debug' => false,
|
||||
'app_debug' => true,
|
||||
// 应用Trace
|
||||
'app_trace' => false,
|
||||
// 是否支持多模块
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@
|
|||
// +----------------------------------------------------------------------
|
||||
namespace base;
|
||||
|
||||
use app\service\ResourcesService;
|
||||
|
||||
/**
|
||||
* 验证码驱动
|
||||
* @author Devil
|
||||
|
|
@ -30,6 +32,7 @@ class Verify
|
|||
private $use_text_color_back;
|
||||
private $key_verify;
|
||||
private $expire_time;
|
||||
private $user_uid;
|
||||
|
||||
/**
|
||||
* [__construct 构造方法]
|
||||
|
|
@ -62,6 +65,9 @@ class Verify
|
|||
$this->use_text_color_back = isset($param['use_text_color_back']) ? $param['use_text_color_back'] : in_array('textcolor', $rules);
|
||||
$this->key_verify = isset($param['key_prefix']) ? trim($param['key_prefix']).'_verify_code' : '_verify_code';
|
||||
$this->expire_time = isset($param['expire_time']) ? intval($param['expire_time']) : 30;
|
||||
|
||||
// 用户唯一uid
|
||||
$this->user_uid = ResourcesService::UserUniqueId();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -146,9 +152,16 @@ class Verify
|
|||
*/
|
||||
public function CheckExpire()
|
||||
{
|
||||
if(isset($_SESSION[$this->key_verify]))
|
||||
// 空uid则存储session
|
||||
if(empty($this->user_uid))
|
||||
{
|
||||
$data = session($this->key_verify);
|
||||
} else {
|
||||
$data = cache($this->key_verify.$this->user_uid);
|
||||
}
|
||||
|
||||
if(!empty($data) && isset($data['time']))
|
||||
{
|
||||
$data = $_SESSION[$this->key_verify];
|
||||
return (time() <= $data['time']+$this->expire_time);
|
||||
}
|
||||
return false;
|
||||
|
|
@ -165,13 +178,20 @@ class Verify
|
|||
*/
|
||||
public function CheckCorrect($verify = '')
|
||||
{
|
||||
if(isset($_SESSION[$this->key_verify]['verify']))
|
||||
// 空uid则存储session
|
||||
if(empty($this->user_uid))
|
||||
{
|
||||
$data = session($this->key_verify);
|
||||
} else {
|
||||
$data = cache($this->key_verify.$this->user_uid);
|
||||
}
|
||||
if(!empty($data) && isset($data['verify']))
|
||||
{
|
||||
if(empty($verify) && isset($_POST['verify']))
|
||||
{
|
||||
$verify = trim($_POST['verify']);
|
||||
}
|
||||
return ($_SESSION[$this->key_verify]['verify'] == strtolower($verify));
|
||||
return ($data['verify'] == strtolower($verify));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
@ -186,9 +206,12 @@ class Verify
|
|||
*/
|
||||
public function Remove()
|
||||
{
|
||||
if(isset($_SESSION[$this->key_verify]))
|
||||
// 空uid则处理session
|
||||
if(empty($this->user_uid))
|
||||
{
|
||||
unset($_SESSION[$this->key_verify]);
|
||||
session($this->key_verify, null);
|
||||
} else {
|
||||
cache($this->key_verify.$this->user_uid, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -201,10 +224,18 @@ class Verify
|
|||
*/
|
||||
private function KindofSession()
|
||||
{
|
||||
$_SESSION[$this->key_verify] = array(
|
||||
'verify' => $this->rand_string,
|
||||
'time' => time(),
|
||||
);
|
||||
$data = [
|
||||
'verify' => $this->rand_string,
|
||||
'time' => time(),
|
||||
];
|
||||
|
||||
// 空uid则存储session
|
||||
if(empty($this->user_uid))
|
||||
{
|
||||
session($this->key_verify, $data);
|
||||
} else {
|
||||
cache($this->key_verify.$this->user_uid, $data, $this->expire_time);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title></title>
|
||||
<script type="text/javascript" src="../internal.js"></script>
|
||||
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak={{common_baidu_map_ak}}"></script>
|
||||
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=XSdiGjfg3wOHiKjpYEMG6CYA"></script>
|
||||
<style type="text/css">
|
||||
.content{width:530px; height: 350px;margin: 10px auto;}
|
||||
.content table{width: 100%}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak={{common_baidu_map_ak}}"></script>
|
||||
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=XSdiGjfg3wOHiKjpYEMG6CYA"></script>
|
||||
</head>
|
||||
|
||||
<body onload="initMap();">
|
||||
|
|
|
|||
Loading…
Reference in New Issue