tp6登录密码加盐处理

登录功能
tp6登录与之前并无太大区别,我这里也是mvc结构,只是$this->error(),$this->success()这些方法不能直接调用,要自己写,我这里都用return代替了,下面是代码,验证码的通过composer安装,这个手册上面有详细的方法,我就不过多赘述了,地址是这个验证码安装与使用,我之间也遇到一些小问题,记录在上一篇文章中tp6调用验证码遇到的一些问题,可以参考一下。记得开启session,tp6默认是关闭,下面是代码

前台页面
我这里用的是ajax提交,也可以选择传统的form表单提交

  <form id="commentForm" action="##" onsubmit="return false">
                    <h4 class="no-margins">登录:</h4>
                    <p class="m-t-md">欢迎登录爱云保后台管理系统</p>
                    <input type="text" required class="form-control uname" name="username" placeholder="用户名" />
                    <input type="password" required class="form-control pword m-b" name="pwd" placeholder="密码" />
                    <div class="form-group" style="display:flex;align-items: center;justify-content: space-between;">
                        <input type="text" style="color: #333;margin-top:0px;width: 55%" name="code" required class="form-control" placeholder="验证码">
                        <img src="{:captcha_src()}" id="captcha-image" onclick="changeImage(this)" class="captcha" height="34" width=40% />
                    </div>
                    <button class="btn btn-success btn-block" onclick="threeFn()">登录</button>
                </form>
            </div>
        </div>
        <div class="signup-footer">
            <div class="pull-left">
                &copy;本菜鸡的一点总结
            </div>
        </div>
    </div>
</body>
<!-- 全局js -->
<script src="/static/admin/js/jquery.min.js?v=2.1.4"></script>
<script src="/static/admin/js/bootstrap.min.js?v=3.3.6"></script>

<!-- layer javascript -->
<script src="/static/admin/js/plugins/layer/layer.min.js"></script>

<script type="text/javascript">
    //点击刷新验证码
    function changeImage() {
        var url = "{:captcha_src()}";
        if(url.indexOf('?')>-1){
            url = url+'&m='+Math.random()
        }else{
            url = url+'?m='+Math.random()
        }
        $("#captcha-image").attr('src',url);
    }
    //验证
    function threeFn() {
        var username = $('input[name="username"]').val();
        var pwd = $('input[name="pwd"]').val();
        var code = $('input[name="code"]').val();
        if(username == ''||username==null||username==undefined) {
            parent.layer.msg('请输入账号');return;
        }else if(pwd == ''||pwd==null||pwd==undefined){
            parent.layer.msg('请输入密码');return;
        }else if(code == ''||code==null||code==undefined){
            parent.layer.msg('请输入验证码');return;
        }else{
            var JsonData = {
                    username: username,
                    pwd: pwd,
                    code: code
            };
        }
        //ajax提交
        $.ajax({
            type: "POST",//方法类型
            dataType: "json",//预期服务器返回的数据类型
            url: "/admin/login/login" ,//url
            data: JsonData,
            success: function (res) {
               if(res.code==200){
                   parent.layer.msg('登录成功');
                   window.location.href = "/admin/index/index";
               }else{
                   parent.layer.msg(res.msg);
               }
               changeImage();
            }
        });
    }
</script>

后台控制器

class Login extends BaseController
{
	//登录主页判断是pc或手机,可不要
    public function index()
    {
        //判断是移动端登陆还是pc登陆
         $ismobile=request()->isMobile();
         if($ismobile){
             // 模板输出
             return View::fetch('login2');
         }else{
           // 模板输出
            return View::fetch('login');
         }
    }
    
    //登录
    public function login(Request $request)
    {
    //判断是否post提交
        if ($request->ispost()){
            //获取参数
            $username = input('username');
            $password = input('pwd');
            $verify = input('code');
            //判断验证码是否正确
            if (!captcha_check($verify)) {
                return json(['code'=>500,'msg'=>'验证码错误']);
            };
            //查找数据库信息与该用户名对比
            $model = SysManager::where('username',$username)->find();
            //判断用户民是否存在
            if (!$model){
                return json(['code'=>602,'msg'=>'用户名错误']);
            }
            //判断用户是否停用
            if($model['status'] != 1)
                return json(['code'=>601,'msg'=>'该账号已停用']);
            //判断密码是否正确
            if(SysManager::entryPwd($model['salt'],$password)===$model['password']) {
                //密码正确将用户id存入session
                session('user_id', $model['id']);
                //最后一次登陆时间time()函数只能获取时间戳
                $model->last_time = date('Y-m-d H:i:s',time());
                //登陆ip
                $model->lastip = $this->request->ip();
                //登陆次数
                $model->login_times = $model->login_times + 1;
                $model->save();
                //全部验证通过登录成功                
                return json(['code' => 200, 'msg' => '登录成功']);
            }else{
                return json(['code'=>603,'msg'=>'密码错误']);
            }
        }
        // 模板输出
        return View::fetch();
    }

    //退出登录
    public function logout()
    {
    	//清除session,重定向到登录页
        Session::delete('user_id');
        return redirect("/admin/login/index");
    }
}

模型

class SysManager extends Model
{
//    use SoftDelete;
    //数据库表名
    protected $table = 'iyb_admin';

    //将盐和密码存入数据库
    public function setPasswordAttr($value)
    {
        $salt = rand(10000,99999);
        $this->setAttr('salt',$salt);
        $password=self::entryPwd($salt,$value);
        return ['password'=>$password,'salt'=>$salt];
    }

    //密码加密
    public static function entryPwd($salt,$value)
    {
        return md5($salt.$value);
    }
}

以上就是简单的登录加盐功能

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值