图片验证码优化
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))
|
if(($n > 2) && preg_match($preg, $host))
|
||||||
{
|
{
|
||||||
// 双后缀取后3位
|
// 双后缀取后3位
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ namespace app\service;
|
||||||
|
|
||||||
use think\Db;
|
use think\Db;
|
||||||
use think\facade\Hook;
|
use think\facade\Hook;
|
||||||
|
use app\service\UserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 资源服务层
|
* 资源服务层
|
||||||
|
|
@ -672,5 +673,28 @@ class ResourcesService
|
||||||
'application/x-zip-compressed',
|
'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_host' => '',
|
||||||
// 应用调试模式
|
// 应用调试模式
|
||||||
'app_debug' => false,
|
'app_debug' => true,
|
||||||
// 应用Trace
|
// 应用Trace
|
||||||
'app_trace' => false,
|
'app_trace' => false,
|
||||||
// 是否支持多模块
|
// 是否支持多模块
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@
|
||||||
// +----------------------------------------------------------------------
|
// +----------------------------------------------------------------------
|
||||||
namespace base;
|
namespace base;
|
||||||
|
|
||||||
|
use app\service\ResourcesService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 验证码驱动
|
* 验证码驱动
|
||||||
* @author Devil
|
* @author Devil
|
||||||
|
|
@ -30,6 +32,7 @@ class Verify
|
||||||
private $use_text_color_back;
|
private $use_text_color_back;
|
||||||
private $key_verify;
|
private $key_verify;
|
||||||
private $expire_time;
|
private $expire_time;
|
||||||
|
private $user_uid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [__construct 构造方法]
|
* [__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->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->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;
|
$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()
|
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 (time() <= $data['time']+$this->expire_time);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -165,13 +178,20 @@ class Verify
|
||||||
*/
|
*/
|
||||||
public function CheckCorrect($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']))
|
if(empty($verify) && isset($_POST['verify']))
|
||||||
{
|
{
|
||||||
$verify = trim($_POST['verify']);
|
$verify = trim($_POST['verify']);
|
||||||
}
|
}
|
||||||
return ($_SESSION[$this->key_verify]['verify'] == strtolower($verify));
|
return ($data['verify'] == strtolower($verify));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -186,9 +206,12 @@ class Verify
|
||||||
*/
|
*/
|
||||||
public function Remove()
|
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()
|
private function KindofSession()
|
||||||
{
|
{
|
||||||
$_SESSION[$this->key_verify] = array(
|
$data = [
|
||||||
'verify' => $this->rand_string,
|
'verify' => $this->rand_string,
|
||||||
'time' => time(),
|
'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" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<title></title>
|
<title></title>
|
||||||
<script type="text/javascript" src="../internal.js"></script>
|
<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">
|
<style type="text/css">
|
||||||
.content{width:530px; height: 350px;margin: 10px auto;}
|
.content{width:530px; height: 350px;margin: 10px auto;}
|
||||||
.content table{width: 100%}
|
.content table{width: 100%}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
</style>
|
</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>
|
</head>
|
||||||
|
|
||||||
<body onload="initMap();">
|
<body onload="initMap();">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue