如何实现后台登录功能 一步到位!!!
来源:互联网 发布:怎么学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中}
阅读全文
0 0
- 如何实现后台登录功能 一步到位!!!
- java后台如何实现页面分页功能
- $.ajax和java后台实现用户登录的功能
- Android+ThinkPHP(后台)实现用户登录功能
- $.ajax和java后台实现用户登录的功能
- jsp如何实现自动登录功能
- 网站如何实现QQ登录功能
- 如何实现Linux操作系统的自动登录功能
- Java网站中的自动登录功能如何实现 Session Cookie
- php 留言板 如何实现登录之后才能留言的功能
- 实现登录过滤器功能
- session实现登录功能
- EJB实现登录功能
- Qt 实现登录功能
- cookie登录功能实现
- jsoup实现登录功能
- HttpClient实现登录功能
- java实现登录功能
- HDU 2056 Rectangles
- SVN提交时出现文件remains in conflict错误
- 3.2队列
- 文章标题
- PHPExcel对于Excel中日期和时间类型的处理
- 如何实现后台登录功能 一步到位!!!
- 日夜间模式切换
- HDU2222 Keywords Search —— AC自动机
- 使用Android模拟器调试串口功能
- 本人小白一枚,刚学习SpringMVC+MyBatis,遇到了一个问题一直报错 **No mapping found for HTTP request with URI**
- javav单个修改时间
- JS中定义的function所传整型参数最大能有多大?
- CentOS yum 安装 PHP 5.6.24(附带安装GD库)
- socket 请求 超时重试