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

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

    1、通用方法编写

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

    <?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方法封装

    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层,主要用于一些数据操作

    <?php
    namespace Common\Model;
    use Think\Model;
    
    /**
     * 后台用户操作类
     */
    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);
    	}
    }
    ?>
    

      

        登录功能后端实现逻辑

    <?php
    namespace Admin\Controller;
    use Think\Controller;
    
    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登录逻辑实现

    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

  • 相关阅读:
    BAT都来参加的 DevOps Master 培训
    如何快速复制BAT级的DevOps工具链
    DevOps开源工具的三种分类整理
    Devops成功的八大炫酷工具
    阿里CI/CD、DevOps、分层自动化技术
    Android爬坑之旅:软键盘挡住输入框问题的终极解决方式
    Android应用程序窗体View的创建过程
    LeetCode Convert Sorted List to Binary Search Tree
    Spark Streaming性能优化系列-怎样获得和持续使用足够的集群计算资源?
    android nfc中Ndef格式的读写
  • 原文地址:https://www.cnblogs.com/lzy138/p/7197978.html
Copyright © 2011-2022 走看看