如何实现后台登录功能 一步到位!!!

来源:互联网 发布:怎么学java编程语言 编辑:程序博客网 时间:2024/05/21 22:45

LoginController 部分代码

<?phpnamespace Admin\Controller;use Think\Controller;/** * use Common\Model 这块可以不需要使用,框架默认会加载里面的内容 */class LoginController extends Controller {    public function index(){  //这段代码的意思是“如果session信息已经存在的话,如果再输入登录页面的地址会直接跳转到后台界面”        if(session('adminUser')) {            $this->redirect('/admin.php?c=index');        }//        //admin.php?c=index        $this->display();    }    //因为前端的代码在审查元素之后大家都可以看见,为了安全起见在后端也需要做一个强校验。    public function check(){        //  获取页面中的用户名 和 密码        $username = $_POST['username'];        $password = $_POST['password'];        //做判断        if(!trim($username)){     //trim表示把空格孤立            return show(0,'用户名不能为空');//show 在common/function下定义一个show的函数。属于公用,所以放在common        }//直接调用show.        if(!trim($password)){            return show(0,'密码不能为空');        }        $ret = D('Admin')->getAdminByUsername($username);//  D调用Common/Conf/Model层的getAdminByUsername     //做校验        if(!$ret){         return show(0,'该用户不存在');     }     if($ret['password'] !=getMd5password($password)){  //从数据库中找到password与getMd5password中的password相比较是否一致,不一致则“密码错误”          return show(0,'密码错误');     }     session('adminUser',$ret);  //用户登录成功之后会将登录信息记录一份到session里面,后续根据session信息判断用户是否登录,退出登录则会把session信息盖掉,session信息不存在则为未登录     return show(1,'登录成功');//如果从数据库中找到password与getMd5password中的password相比较是否一致,是一致则“登录成功”    }    public function loginout(){        session('adminUser',null);  //  退出就是将session信息清零        $this->redirect('/index.php?m=admin&c=login');//  退出之后做一个跳转,跳转到登录界面    }}


登录界面的HTML代码

<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="">    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->    <meta name="description" content="">    <meta name="author" content="">    <link rel="icon" href="">    <title>singcms内容管理平台</title>    <!-- Bootstrap core CSS -->    <link href="/Public/css/bootstrap.min.css" rel="stylesheet">    <!-- Custom styles for this template -->    <link href="signin.css" rel="stylesheet">    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->    <!--[if lt IE 9]>    <![endif]--></head><body><style>    .s_center {        margin-left: auto;        margin-right: auto;    }</style><div class="s_center container col-lg-6 ">    <form class="form-signin" enctype="multipart/form-data"   method="post">        <h2 class="form-signin-heading">请登录</h2>        <label class="sr-only">用户名</label>        <input type="text"  class="form-control" name="username" placeholder="请填写用户名" required autofocus>        <br />        <label  class="sr-only">密码</label>        <input type="password" name="password" id="inputPassword" class="form-control" placeholder="密码" required>        <br />        <button class="btn btn-lg btn-primary btn-block" type="button" onclick="login.check()">登录</button>    </form></div> <!-- /container --><script src="/Public/js/jquery.js"></script><script src="/Public/js/dialog/layer.js"></script><script src="/Public/js/dialog.js"></script><script src="/Public/js/admin/login.js"></script><!-- IE10 viewport hack for Surface/desktop Windows 8 bug --></body></html> 


login.js的代码


/** * 前端登录业务类 * @author singwa */    var login = {    check :function () {        //  获取页面中的用户名 和 密码        var username = $('input[name="username"]').val();        var password = $('input[name="password"]').val();        //对用户名 和 密码进行校验        if(!username){            //调用dialog.js中的 dialog 类库            dialog.error('用户名不能为空');        }        if(!password){            //调用dialog.js中的 dialog 类库            dialog.error('密码不能为空');        }        var url = "/index.php?m=admin&c=login&a=check";  //执行controller下的Logincontroller.class.php的check方法        var data ={'username':username,'password':password};  //data表示需要传递的值        //执行异步请求 $.post(ajax请求)        $.post(url,data,function (result) {            if(result.status==0){   //定义status==0的时候出现一个dialog失败的弹框                return dialog.error(result.message);            }            if(result.status==1){  //定义status==1的时候出现一个dialog成功的弹框                return dialog.success(result.message,'/index.php?m=admin&c=index'); //result表示URL接口所返回的一个值或者一个内容,然后登录成功之后跳转到另一个URL地址(后台页面)            }        },'json')   //参数json不能忘    }}

dialog.js     dialog类的封装代码部分

var dialog = {    // 错误弹出层    error: function(message) {        layer.open({            content:message,            icon:2,            title : '错误提示',        });    },    //成功弹出层    success : function(message,url) {        layer.open({            content : message,            icon : 1,            yes : function(){                location.href=url;            },        });    },    // 确认弹出层    confirm : function(message, url) {        layer.open({            content : message,            icon:3,            btn : ['是','否'],            yes : function(){                location.href=url;            },        });    },    //无需跳转到指定页面的确认弹出层    toconfirm : function(message) {        layer.open({            content : message,            icon:3,            btn : ['确定'],        });    },}


Common中的function.php公用方法


<?php/** * 公用的方法 */function show($status,$message,$data=array()){  //show,展示一些接口数据,messa起提示作用    $result =array(      'status'=>$status,        'message'=>$message,        'data'=>$data,    );    exit(json_encode($result));   //把值以json形式输出}function getMd5password($password){  //  Md5对password进行加密    return md5($password.C('MD5_PRE'));//  还需要把MD5_PRE定义到common/conf/config中}


原创粉丝点击