ThinkPHP 禁止用户访问后台管理方法 及 中间控制器创建方法

Controller此方面的功能主要是session来进行限制,而session放在了Controller中,所以我们在顶部用use Think\Controller就是引入这些功能。

为了此功能不用每个页面中都写,所以我们自己写一个 间控制器,此控制器继承了Controller,其它页面在使用时,使用我们的中间控制器。

用户登陆处理

此处我们往session中存放了id信息
public function checkLogin()
		{
			$post = I('post.');
			#验证 验证码   不需要传参
			$verify = new \Think\Verify();
			#验证
			$result = $verify -> check($post['captcha']);
						
			if($result)
			{
				$model = M('User');
				#删除验证码元素,方便后面查询
				unset($post['captcha']);
				$data = $model->where($post)->find();
				#判断是否存在
				if($data)
				{
					#存在用户,则保存到session中跳转到后台首页
					session('id',$data['id']);
					session('username',$data['username']);
					session('role_id',$data['roid_id']);
					#跳转
					$this->success('登陆成功',U('Index/index'),3);
				}else{
					$this->error('用户名或密码错误');
				}
			}else{
				$this->error('验证码不正确');
			}
			
		}

在项目中新建中间控制器

#创建中间控制器
#命名:除不能用Empty外,没其它要求。有一个约定俗成的名字:Common,全文件名称:CommonController.class.php
#放置位置也同样放在Controller目录中

 # 所以需要将需要验证的控制器的继承类去续承该控制器CommonController
 
  #如有一个Dept控制器,我们在里面使用该中间控制器
  #则将原来的class DeptController extends Controller,改为
  #class CommonController extends CommonController

 完整控制器代码及验证session后跳转

<?php
	namespace Admin\Controller;
	use Think\Controller;
	
	class CommonController extends Controller
	{
		
		public function _initialize()
		{			
			$id = session('id');
			if(empty($id))
			{
				#下面这种直接跳转会出现框中框的现象,所以我们要用别的方式
				#$this->error('请登陆',U('Public/login'));exit;
				
				$url = U('Public/login');
				echo "<script>top.location.href='$url'</script>";exit;
			}
		}
		
	}
?>

评论

大侠名号:   验证码: 点击我更换图片  

修远兮

在这里记录每一点自己需要的知识

添加创始人微信,一起交流心得

推荐文章RECOMMEND