登录以及验证码验证代码
<?phpnamespace app\admin\controller;
use think\Controller;
use think\Db;
use think\Request;
use app\admin\model\Admins;
header("Content-type: text/html; charset=utf-8");
class Account extends Controller
{
public function login()
{
return $this->fetch();
}
public function dologin(Request $request)
{
// 在model之前 进行db直接操作的测试
// $lma = $request->param();
// $lmb =Db::table('admins')
// ->where([
// 'username' =>['=',$request->param('username')],
// 'password' =>['=', MD5($request->param('password'))]
// ])
// ->find();
// return $lmb? $lma:false;
// $where = ([
// 'username' =>['=',$request->param('username')],
// 'password' =>['=', MD5($request->param('password'))],
// ]);
// 非空验证
if(!$request->param('username')){
exit( json($code=1,$msg='用户名不能为空'));
}
if(!$request->param('password')){
exit( json($code=1,$msg='密码不能为空'));
}
if(!$request->param('vercode')){
exit( json($code=1,$msg='验证码不能为空'));
}
// 验证码验证
if(!captcha_check( $request->param('vercode'))){
//验证失败
exit( json($code=1,$msg='验证码不正确'));
}
// 只根据用户名拿数据
$where = function ($query) use($request){
$query->where([
'username' =>['=',$request->param('username')],
]);
};
//在这有个坑点 返回值 只能是数组、字符串、不能反回一个对象
$lmb = admins::get($where);
//登录用户验证
if(!$lmb){
exit( json($code=1,$msg='登录失败,该用户不存在'));
}
// 登录用户密码验证
if( MD5($request->param('password')) !== $lmb->getData()['password'] ){
exit( json($code=1,$msg='登录失败,密码错误'));
}
// 判断该用户是否被禁用
if($lmb->getData()['status']==1){
exit( json($code=1,$msg='该用户已被管理员禁用'));
}
// 成功登陆 缓存用户登录信息
session('admin',$lmb->getData());
$code =0;
$msg = '登陆成功等待跳转 return json($code=0,$msg,2,$lmb);
}
public function ts()
{
//value 字段 默认值
dump(
Db::table('admins')
->where([
'username'=>['=','admin'],
'id' =>['=',1]
])
->find() //这个find() 只能查询到一条结果
);
}
public function tk()
{
$where = function ($query){
$query->where([
'id' =>['=',1],
// 'username' =>['=','admin'],
// 'id' =>['=',1],
]);
};
$lmb = admins::get($where);
dump($lmb->getData()['username']);
}
}
再贴一个验证码的前端代码代码
login.html【容我精炼一下】
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登入 - layuiAdmin</title>
<meta name="renderer" content="webkit">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="__CSS__/layui/css/layui.css?v=6" media="all">
<link rel="stylesheet" href="__CSS__/style/admin.css" media="all">
<link rel="stylesheet" href="__CSS__/style/login.css" media="all">
</head>
<body>
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: none;">
<div class="layadmin-user-login-main">
<div class="layadmin-user-login-box layadmin-user-login-header">
<h2>layuiAdmin</h2>
<p>layui 官方出品的单页面后台管理模板系统e</p>
</div>
<div class="layadmin-user-login-box layadmin-user-login-body layui-form">
<div class="layui-form-item">
<label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
<input type="text" name="username" id="LAY-user-login-username" lay-verify="required" placeholder="用户名" class="layui-input">
</div>
<div class="layui-form-item">
<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
<input type="password" name="password" id="LAY-user-login-password" lay-verify="required" placeholder="密码" class="layui-input">
</div>
<div class="layui-form-item">
<div class="layui-row">
<div class="layui-col-xs7">
<label class="layadmin-user-login-icon layui-icon layui-icon-vercode" for="LAY-user-login-vercode"></label>
<input type="text" name="vercode" id="LAY-user-login-vercode" lay-verify="required" placeholder="图形验证码" class="layui-input">
</div>
<div class="layui-col-xs5">
<div style="margin-left: 10px;">
<img src="{:captcha_src()}" class="layadmin-user-login-codeimg"onclick="this.src='/admin.php/captcha?id='+Math.random()" id="lm-yz" alt="验证码" title="点击刷新" >
</div>
</div>
</div>
</div>
<div class="layui-form-item" style="margin-bottom: 20px;">
<input type="checkbox" name="remember" lay-skin="primary" title="记住密码">
<a href="forget.html" class="layadmin-user-jump-change layadmin-link" style="margin-top: 7px;">忘记密码?</a>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submit">登 入</button>
</div>
<div class="layui-trans layui-form-item layadmin-user-login-other">
<label>社交账号登入</label>
<a href="javascript:;">
<i class="layui-icon layui-icon-login-qq"></i>
</a>
<a href="javascript:;">
<i class="layui-icon layui-icon-login-wechat"></i>
</a>
<a href="javascript:;">
<i class="layui-icon layui-icon-login-weibo"></i>
</a>
<a href="reg.html" class="layadmin-user-jump-change layadmin-link">注册帐号</a>
</div>
</div>
</div>
<div class="layui-trans layadmin-user-login-footer">
<p>? 2018
<a href="http://www.layui.com/" target="_blank">layui.com</a>
</p>
<p>
<span>
<a href="http://www.layui.com/admin/#get" target="_blank">获取授权</a>
</span>
<span>
<a href="http://www.layui.com/admin/pro/" target="_blank">在线演示</a>
</span>
<span>
<a href="http://www.layui.com/admin/" target="_blank">前往官网</a>
</span>
</p>
</div>
<!--<div class="ladmin-user-login-theme">
<script type="text/html" template>
<ul>
<li data-theme=""><img src="{{ layui.setter.base }}style/res/bg-none.jpg"></li>
<li data-theme="#03152A" style="background-color: #03152A;"></li>
<li data-theme="#2E241B" style="background-color: #2E241B;"></li>
<li data-theme="#50314F" style="background-color: #50314F;"></li>
<li data-theme="#344058" style="background-color: #344058;"></li>
<li data-theme="#20222A" style="background-color: #20222A;"></li>
</ul>
</script>
</div>-->
</div>
<script src="__JS__/layui/layui.js"></script>
<script>
layui.config({
base: '__JS__/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'user'], function () {
var $ = layui.$
, setter = layui.setter
, admin = layui.admin
, form = layui.form
, router = layui.router()
, search = router.search;
form.render();
//提交
form.on('submit(LAY-user-login-submit)', function (obj) {
$('#lm-yz').click(); //刷新验证码
console.log(obj.field);
$.ajax({
type: "GET",
url: 'http://www.laomo.com/admin.php/admin/account/dologin',
dataType: "json",
data: obj.field,
type:'post',
success: function (e) {
console.log(e)
},
error: function (err) {
console.log(err)
}
});
return false;
});
});
</script>
</body>
</html>
再表述一下验证码的 实现,
安装完后,在 config/extra/captcha.php 中配置验证码信息; 【注意了 这个文件名是官方要求】
<?php
// <!-- 配置验证码 -->
return [
// 验证字符集合
'codeSet' => '56789',
// 验证码字体大小
'fontSize' => 36,
// 验证码位数
'length' => 4,
// 关闭验证码杂点
'useNoise' => false,
];
页:
[1]