thinkphp3.2 验证用户是否已经登陆问题

首先声明我是一个初用thinkphp的菜鸟,大神们尽量回答的简单易懂一些啦后台的页面需要需要验证用户是否已经登陆,不能登陆则跳到登陆页,而登陆页面则不需要验证大神们都是如... 首先声明 我是一个初用thinkphp的菜鸟,大神们尽量回答的简单易懂一些啦

后台的页面需要需要验证用户是否已经登陆,不能登陆则跳到登陆页,而登陆页面则不需要验证

大神们都是如何做这个事情的呢、?

网上百度后有人说可以 新建一个CommonController类 ,其他所有页面的类都继承它,类似于钩子的一个功能,是这样子操作的吗,如果是这样的话,该如何操作
后台的所有页面继承的都是 controller 类
展开
 我来答
传闻中的张先生Y
2017-06-14 · 超过21用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:18万
展开全部

目录Application/Common/Controller

新建:BaseController.class.php

<?php
namespace Common\Controller;
use Think\Controller;
class BaseController extends Controller {
    public function _initialize()
    {
        $sid = session('user_id');//检测session是否存在,不存在就跳登录页面
        if (! isset($sid)) {
            header("Location: http://xxxxx");//登录地址
        }
    }
}

登录页面不需要继承Basecontroller:LoginController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller {
    public function login(){
        $admin_name = trim($_POST['admin_name']);
        $pass = md5(trim($_POST['admin_password']));
        $res = M("admin")->where("admin_name='%s' and admin_password='%s'",$admin_name,$pass)->find();
        if($res){
            session("admin_id",$res['admin_id']);
            session("admin_name",$res['admin_name']);
            $this->redirect('Index/index');
        }else{
            $this->error('账号或者密码错误');
        }
    }
}

其他页面如果要验证是否登录,就直接让他继承BaseController

<?php
namespace Home\Controller;
use Common\Controller\BaseController;
class SharingController extends BaseController {
   public function index(){
   }
   //其他操作方法
}
犀利的胡茬子
2017-06-15 · TA获得超过663个赞
知道小有建树答主
回答量:853
采纳率:50%
帮助的人:587万
展开全部

创建一个CommonController控制器 代码如下

namespace Home\Controller;
use Think\Controller;
class CommonController extends Controller {
function __construct(){
parent::__construct();//这里不写会报错。
//因为这个构造方法覆盖掉了父类的构造方法,所以要引入
echo "这里检验登陆状态";//可以写你的验证代码
}
}

这个是thinkphp默认带的一个控制器IndexController拿这个举例 代码如下

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends CommonController { //看这里 CommonController 继承的是上面那个控制器
    public function index(){//这些方法运行时就会去上面那个控制器验证登陆状态
        $this->show("这里是页面");
    }
}

你是新手就多说点  这个是登陆页面控制器 LoginController

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller { //看这里 没有继承 CommonController 这个
    public function Login(){
        //你的登陆代码
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaodim
2014-11-25 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:43.1万
展开全部
新建一个CommonController
=====================================
namespace Admin\Controller
use Think\Controller
class CommonController extends Controller{
public function _initialize(){
// 自动运行方法
if(!isset(session("uid"))){
$this->error("没有登录");

}

}
}
=====================================

登录控制器
namespace Admin\Controller;
use Admin\CommonController;

class LoginController extends CommonController{
}
追问
我的项目   只是一个后台    所有页面继承的都是 controller 类

那些页面如何在访问时就优先判断是否登陆呢
追答
_initialize()
这是一个自动运行的方法
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
找个简单的名字真难
2017-06-15 · TA获得超过713个赞
知道小有建树答主
回答量:263
采纳率:90%
帮助的人:71.5万
展开全部
你先在一个页面上用,就是session嘛:if(Session::get('name')==null){跳转登录页},就一句话,很简单,然后你把这个在放到一个公用的controller里,比这个还简单,在你的项目里稍微找一下,类似的代码多的是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
从来不会不想
2017-06-15 · TA获得超过107个赞
知道答主
回答量:77
采纳率:80%
帮助的人:37.6万
展开全部

纯手打,望采纳

-------------------------------------------------*---------------------------------------------

  1. 建立一个AdminController集成Controller

  2. 所有的后台操作控制器集成AdminController

  3. 在AdminController的构造方法里(_initialize)判断是否有用户登录时存进的session(或者自己用了别的方法),有和没有的执行内容就看你的业务需求了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式