PHP从前端到后台整站开发实战笔记-2

1.layer.js引用与dialog.js封装

前端界面中需要经常用到弹出对话框的效果,这里基于layer.js进行二次封装,适用于本项目更方便

首先需要将相关的js和css等公共文件放到/Public文件夹中

PHP从前端到后台整站开发实战笔记-2_第1张图片

新建的dialog.js内容:

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:['确定'],
        })
    }
}

2.创建function.php公共函数库

项目中会经常用到公共函数都放在/Application/Common/Common/function.php里面

 $status,
        'message' => $message,
        'data' => $data,
    );
    exit(json_encode($result));
}

//MD5加密,用来对登陆用户的密码进行加密处理
function getMD5Password($password){
    return md5($password . C('MD5_PRE'));   //将传入的原始密码+配置文件中定义的后缀字符串一并进行MD5加密计算,提高安全性
}

这里用到了ThinkPHP的内置函数C(),该函数的作用是可以直接调用之前在Application/Common/Conf/config.php中写的配置信息,再附一遍config.php的内容(上一篇里面已经写好的):

'配置值'	
	'LOAD_EXT_CONFIG' => 'db',
	'MD5_PRE' => 'lian',
);

3.创建Admin模块

可以直接将框架中自动生成的Home文件夹复制一份修改文件夹名为Admin

3.1创建AdminModel.class.php

教程中是新建文件Application/Common/Model/AdminModel.class.php,而没有放在Application/Admin/Model里面,这样做的意思好像是可以保证通用性更好?

_db = M('admin');    //调用Thinkphp里面的M方法将数据库中的admin表(全称是cms_admin,因为在Common\Conf\db.php中设置了PREFIX前缀,所以这里不需要写完整的表名)进行模型化处理
    }

    //通过用户名查询数据库中的表
    public function getAdminByUsername($username=''){
        $res = $this->_db->where('username="'.$username.'"')->find();
        return $res;
    }
}
这里用到了ThinkPHP的内置函数M(),可以直接将数据中的表转换成ORM对象,然后可以用where()->find()等方法来获取相应的数据结果.

3.2创建Login控制器

在Application/Admin/Controller/文件夹中新建LoginController.class.php

redirect('/admin.php?c=index');
        }
        $this->display();        
    }
    public function check(){        //登陆账号信息校验
        $username = $_POST['username'];
        $password = $_POST['password'];
        if(!trim($username)){
            return show(0,'用户名不能为空');        //调用之前在function.php中写的show()函数
        }
        if(!trim($password)){
            return show(0,'密码不能为空');
        }        

        $ret = D('Admin')->getAdminByUsername($username);    //调用Thinkphp中的D()方法来实例化Admin模块(Model),然后调用模块中的方法
        if(!$ret){
            return show(0,'该用户不存在');
        }        

        if($ret['password'] !=getMD5Password($password)){
            return show(0,'密码错误');
        }

        session('adminUser',$ret);
        return show(1,"登陆成功");
        
    }
}

这里用到了ThinkPHP框架的内置函数D(),用来直接实例化相应的模块,然后可以直接调用模块里面的方法

3.3创建静态模板

ThinkPHP中规定了模板的命名与存放路径的格式:/View/控制器名/index.html,刚才创建了LoginController.class.php,那么他对应的静态模板应该是Application/Admin/View/Login/index.html





    
    
    
        
    后台登陆



    
    

这里登陆按钮绑定了login.check()函数,对应的代码在Public/js/admin/login.js中,实现异步校验登陆账号密码是否正确的效果:

// 前端登陆js业务类
var login = {
    check:function(){
        // 获取登陆页面中的用户名和密码
        var username = $("input[name='username'").val();
        var password = $("input[name='password'").val();

        if(!username){
            dialog.error("用户名不能为空");
        }
        if(!password){
            dialog.error("密码不能为空");
        }

        //执行异步请求
        var url = "index.php?m=admin&c=login&a=check";
        var data={'username':username,'password':password};
        $.post(url,data,function(result){           
            if(result.status == 0){                
                return dialog.error(result.message);
            }
            if(result.status == 1){
                return dialog.success(result.message, 'index.php?m=admin&c=index');
            }
        },'JSON');      //擦~这里一定要记得写'JSON'声明ajax获取到的数据格式类型,否则没法调用result.status属性
    }
}

你可能感兴趣的:(php)