Commit 5d9c826567b9ca63022c304771fd5eb053fe9cae

Authored by u123231312
1 parent 54b28d20

PC接入智能验证

... ... @@ -23,7 +23,7 @@ class Login extends Controller
if(request()->isPost()) {
$data = input('post.');
$admin = new Admin();
$return = $admin->login($data,$this->system['code']);
$return = $admin->login($data,$this->system['code'],$this->system['ticket']);
return ['code' => $return['code'], 'msg' => $return['msg']];
}else{
return $this->fetch();
... ... @@ -36,7 +36,7 @@ class Login extends Controller
// 验证码位数
'length' => 4,
// 关闭验证码杂点
'useNoise' => false,
'useNoise' => true,
'bg' => [255,255,255],
];
$captcha = new Captcha($config);
... ...
... ... @@ -5,12 +5,35 @@ use think\Db;
class Admin extends Model
{
protected $pk = 'admin_id';
public function login($data,$code){
public function login($data,$code,$ticket){
//是否开启图形验证码
if($code=='open'){
//图形验证码
if(!$this->check($data['vercode'])){
return ['code' => 0, 'msg' => '验证码错误'];
}
}
//是否开启腾讯验证码
if($ticket=='open'){
//腾讯图片验证码接入
if(!$data['ticket']||!$data['randstr']){
return ['code' => 0, 'msg' => '请点击按钮进行验证'];
}
$url ="https://ssl.captcha.qq.com/ticket/verify?aid=2049832761&AppSecretKey=0a_JIu1xvHoAuMltJ0h4jmw**&Ticket=".$data['ticket']."&Randstr=".$data['randstr']."&UserIP=".$_SERVER['REMOTE_ADDR'];
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
$output = json_decode($output,true);
if($output['response']!=1){
return ['code' =>0,'msg'=>$output['err_msg']];
}
}
$user=Db::name('admin')->where('username',$data['username'])->find();
if($user) {
if ($user['is_open']==1 && $user['pwd'] == md5($data['password'])){
... ...
... ... @@ -19,9 +19,10 @@
</div>
<ul class="layui-nav admin-header-item" lay-filter="side-top-right">
{if session('username') eq "admin"}<li class="layui-nav-item" id="cache">
<li class="layui-nav-item" id="cache">
<a href="javascript:;">{:lang('clearCache')}</a>
</li>
{if session('username') eq "admin"}
<li class="layui-nav-item">
<a href="{:url('home/index/index')}" target="_blank">{:lang('home')}</a>
</li>
... ...
... ... @@ -8,6 +8,8 @@
<link rel="stylesheet" href="/static/plugins/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="/static/admin/css/login.css" />
<link rel="stylesheet" href="/static/common/css/font.css" />
<!--腾讯智能验证码接入-->
<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
</head>
<body class="beg-login-bg">
<div class="container login">
... ... @@ -41,6 +43,27 @@
</div>
</div>
{/if}
{if $system['ticket'] == 'open'}
<input type="hidden" name="randstr"><input type="hidden" name="ticket">
<!--腾讯智能验证码接入 开始-->
<div class="layui-form-item" id="TencentCaptchaDiv">
<!--点击此元素会自动激活验证码-->
<!--id : 元素的id(必须)-->
<!--data-appid : AppID(必须)-->
<!--data-cbfn : 回调函数名(必须)-->
<!--data-biz-state : 业务自定义透传参数(可选)-->
<a class="layui-btn layui-btn-normal btn-blog" id="TencentCaptcha" data-appid="2049832761" data-cbfn="callback">点击按钮进行验证</a>
</div>
<div class="layui-form-item" id="TencentCaptchafnDiv" style="display:none">
<!--点击此元素会自动激活验证码-->
<!--id : 元素的id(必须)-->
<!--data-appid : AppID(必须)-->
<!--data-cbfn : 回调函数名(必须)-->
<!--data-biz-state : 业务自定义透传参数(可选)-->
<a class="layui-btn layui-btn-normal btn-blog" id="TencentCaptchafn">验证成功</a>
</div>
<!--腾讯智能验证码接入 结束-->
{/if}
<div class="layui-form-item">
<button type="submit" class="layui-btn btn-submit btn-blog" lay-submit lay-filter="login">登录</button>
</div>
... ... @@ -57,6 +80,20 @@
<script src="/static/admin/js/rAF.js"></script>
<script src="/static/admin/js/login.js"></script>
<script type="text/javascript" src="/static/plugins/layui/layui.js"></script>
<!--腾讯智能验证码接入-->
<script src="/static/home/js/jquery.min.js"></script>
<script type="text/javascript">
window.callback = function(res){
// res(未通过验证)= {ret: 1, ticket: null}
// res(验证成功) = {ret: 0, ticket: "String", randstr: "String"}
if(res.ret === 0){
$("input[name='ticket']").val(res.ticket); // 票据
$("input[name='randstr']").val(res.randstr); // 随机串
$("#TencentCaptchaDiv").hide();
$("#TencentCaptchafnDiv").show();
}
}
</script>>
<script>
layui.use('form',function(){
var form = layui.form,$ = layui.jquery;
... ...
... ... @@ -114,13 +114,20 @@
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<label class="layui-form-label">图形验证码</label>
<div class="layui-input-block">
<input type="radio" name="code" value="open" title="开启">
<input type="radio" name="code" value="close" title="关闭">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">智能验证码</label>
<div class="layui-input-block">
<input type="radio" name="ticket" value="open" title="开启">
<input type="radio" name="ticket" value="close" title="关闭">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit="" lay-filter="sys">{:lang('submit')}</button>
<button type="reset" class="layui-btn layui-btn-primary">{:lang('reset')}</button>
... ...