1、实现后台登录功能
控制器:PublicController.class.php
模版:login.html
方法:login captcha checkLogin
第一步:在控制器中创建captcha方法,用于输出验证码
//captcha方法
public function captcha(){
//配置
$cfg = array(){
'fontSize' => 20, // 验证码字体大小(px)
'useCurve' => false, // 是否画混淆曲线
'useNoise' => false, // 是否添加杂点
'length' => 4, // 验证码位数
'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
};
//实例化验证码类
$Verify = new \Think\Verify($cfg);
//输出验证码
$Verify -> entry();
}
}
第二步:在模版文件login.html中输出验证码
<cite><img style="margin-left: 3px;" src="__CONTROLLER__/captcha" /></cite>
给图片绑定点击事件,让点击图片能够刷新验证码:
<cite><img style="margin-left: 3px;" src="__CONTROLLER__/captcha" onclick="this.src='__CONTROLLER__/captcha/t/'+Math.random()" /></cite>
第三步:准备创建用户表
表名:oa_user
检查表单:
添加form标签:
<form action="{:U('checkLogin')}" method="post">
字段完善:
修改登录按钮的href属性,阻止其默认的浏览器行为:
编写jQuery代码实现表单的提交:
//jQuery代码
$(function(){
//给登录按钮绑定点击事件
$('.btn').on('click',function(){
//事件处理程序
$('form').submit();
});
});
编写checkLogin方法用于处理用户登录
public function checkLogin(){
//接收数据
$post = I('post.');
//验证码验证(不需要传参)
$verify = new \Think\Verify();
//验证
$result = $verify -> check($post['captcha']);
//判断验证码是否正确
if ($result){
//验证码正确,继续处理用户名和密码
$model = M('User');
//删除验证码元素
unset($post['catpcha']);
//查询
$data = $model -> where($post) -> find();
//判断是否存在用户
if($data){
//存在用户,用户信息持久化保存到session中,跳转到后台
session('id',$data['id']);
session('username',$data['username']);
session('role_id',$data['role_id']);
//跳转
$this -> success('登录成功',U('Index/index'),3);
}else{
//不存在
$this -> error('用户名或密码错误');
}
}else{
//验证码不正确
$this -> error('验证码不正确');
}
}
创建退出方法:
public function logout(){
//清除session
session(null);
//跳转到登录页面
$this -> success('退出成功',U('login'),3);
}
修改跳转地址,让地址跳转到Public/logout: