当前位置: 首页 > news >正文

前端到后台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

转载于:https://www.cnblogs.com/lzy138/p/7197978.html

相关文章:

  • 放slides了,无人值守的性能测试 for 淘宝技术嘉年华TCon2011
  • 事件冒泡和事件捕获
  • 【Android Dev Guide - 01】 - What Is Android?什么是Android?
  • CodeVs——T 3304 水果姐逛水果街Ⅰ
  • 【Android Dev Guide - 02】 - Application Fundamentals 应用基础
  • 【代码笔记】iOS-自定义选择框(高底强弱)
  • 惨痛教训
  • python(二十八)
  • 页面查找技巧
  • SqlServer索引的原理与应用
  • Spring+SpringMVC+mybatis整合以及注解的使用(三)
  • vs2010 javascript代码折叠扩展插件
  • css定位
  • 最简单的手工写增,删,改,查的代码
  • Lucene 4.0 TieredMergePolicy
  • [Vue CLI 3] 配置解析之 css.extract
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • css系列之关于字体的事
  • Cumulo 的 ClojureScript 模块已经成型
  • express + mock 让前后台并行开发
  • extjs4学习之配置
  • Flannel解读
  • learning koa2.x
  • pdf文件如何在线转换为jpg图片
  • Phpstorm怎样批量删除空行?
  • RxJS: 简单入门
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Vim 折腾记
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • Xmanager 远程桌面 CentOS 7
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 聊聊directory traversal attack
  • 如何解决微信端直接跳WAP端
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 设计模式(12)迭代器模式(讲解+应用)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通过npm或yarn自动生成vue组件
  • 小程序开发之路(一)
  • 因为阿里,他们成了“杭漂”
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 主流的CSS水平和垂直居中技术大全
  • MPAndroidChart 教程:Y轴 YAxis
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​TypeScript都不会用,也敢说会前端?
  • ​比特币大跌的 2 个原因
  • ​马来语翻译中文去哪比较好?
  • #HarmonyOS:基础语法
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $.each()与$(selector).each()
  • (k8s中)docker netty OOM问题记录
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)SSM环卫人员管理平台 计算机毕设36412