zoukankan      html  css  js  c++  java
  • 前端到后台ThinkPHP开发整站(2)

    我这次使用的ThinkPHP版本是:3.2.3版本,还有会使用到一个弹出层插件,叫 layer,官网地址是:http://layer.layui.com/。废话不多说,进入撸码环节。

    1、通用方法编写

      这个是后端公共方法,现在暂时写两个方法,再往后开发想到有需要的话,就会继续添加更多的公共方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     
    /**
     * JSON数据返回
     */
    function jsonResult($status,$message,$data){
        $result=array({
            'status'=>$status,
            'message'=>$message,
            'data'=>$data
        });
        exit(json_encode($result));
    }
     
    /**
     * MD5加密密码
     */
    function getMd5Password($password){
        return md5($password.C('MD5_PRE'));
    }
    ?>

      公共弹出JS方法封装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    var dialog = {
        /**
         * 错误弹出层
         * @param {String} 内容
         */
        error: function(message) {
            layer.open({
                content: message,
                icon: 2,
                title: '错误提示'
            });
        },
     
        /**
         * 成功弹出层
         * @param {String} 内容
         * @param {String} 跳转地址
         */
        success: function(message, url) {
            layer.open({
                content: message,
                icon: 1,
                yes: function() {
                    location.href = url;
                }
            });
        },
     
        /**
         * 确认弹出层
         * @param {String} 内容
         * @param {String} 跳转地址
         */
        confirm: function(message, url) {
            layer.open({
                content: message,
                icon: 3,
                btn: ['是''否'],
                yes: function() {
                    location.href = url;
                }
            });
        },
     
        /**
         * 无需跳转到指定页面的确认弹出层
         * @param {string} 内容
         */
        toconfirm: function(message) {
            layer.open({
                content: message,
                icon: 3,
                btn: ['确定']
            });
        },
         
        /**
         * 加载层
         */
        load:function(){
            var index = layer.load(1, {
                shade: [0.6,'#000'//0.1透明度的白色背景
            });
            return index;
        }
    }

    2、登录功能:

        后台用户操作类,添加在Model层,主要用于一些数据操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
    namespace CommonModel;
    use ThinkModel;
     
    /**
     * 后台用户操作类
     */
    class AdminModel extends Model{
        private $_db=null;
         
        public function __construct(){
            $this->_db=M('admin');
        }
         
        /**
         * 根据用户名获取用户信息
         * $username string 用户名
         */
        public function getAdminByUserName($username=''){
            $ret=$this->_db->where("user_name='{$username}'")->find();
            return $ret;
        }
         
        /**
         * 根据adminid更新数据
         * $id int id
         * $data object 需更新的数据
         */
        public function updateByAdminId($id,$data){
            if(!$id || !is_numeric($id)){
                throw_exception("ID不合法");
            }
            if(!$data || !is_array($data)){
                throw_exception('更新的数据不合法');
            }
            return $this->_db->where("admin_id={$id}").save($data);
        }
    }
    ?>

      

        登录功能后端实现逻辑

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php
    namespace AdminController;
    use ThinkController;
     
    class LoginController extends Controller{
        public function index(){
            if(session('adminUser')){
                $this->redirect('/admin.php?c=index');
            }
            $this->display();
        }
         
        public function check(){
            $username=$_POST['username'];
            $password=$_POST['password'];
            if(!trim($username)){
                return jsonResult(0, '用户名不能为空');
            }
            if(!trim($password)){
                return jsonResult(0, '密码不能为空');
            }
             
            $ret=D('Admin')->getAdminByUsername($username);
            if(!ret || $ret['status']!=1){
                return jsonResult(0, '该用户不存在');
            }
             
            if($ret['password']!=getMd5Password($password)){
                return jsonResult(0, '用户名或密码错误');
            }
             
            D("Admin")->updateByAdminId($ret['admin_id'],array('last_login_time'=>time()));
            session('adminUser',$ret);
            return jsonResult(1, '登录成功');
        }
    }
    ?>

      前端JS登录逻辑实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    var login={
        check:function(){
            //获取登录页面中的用户名 和 密码
            var username=$('input[name="username"]').val(),
                password=$('input[name="password"]').val();
            if(!username){
                dialog.error('用户名不能为空');
            }
            if(!password){
                dialog.error('密码不能为空');
            }
             
            var url="/index.php?m=admin&c=login&a=check",
                data={
                    "username":username,
                    "password":password
                };
            var load = dialog.load();
            $.post(url,data,function(result){
                layer.close(load);
                if(result.status==0){
                    return dialog.error(result.message);
                }
                if(result.status==1){
                    return dialog.success(result.message,'/admin.php?c=index');
                }
            },'JSON');
        }
    }

      今天就简单的做到这里了,项目的开始,造轮子的时间比较长,轮子造好了,车就可以开快了!(๑╹◡╹)ノ"""

    源码地址:https://github.com/YoZiLin/TP-CMS

  • 相关阅读:
    Nuget~打包时添加powershell初始化脚本
    ELK系列~对fluentd参数的理解
    arclistsg独立单表模型文档列表
    arcpagelistarclist列表分页
    autochannel 指定栏目
    ini文件解析c库(iniparser)
    POJ 1386 有向图欧拉通路
    最好用的20个数据可视化工具(四)
    各种语音编码总结
    struts2讲义----二
  • 原文地址:https://www.cnblogs.com/alinaxia/p/7204010.html
Copyright © 2011-2022 走看看