thinkphp3.2 验证用户是否已经登陆问题
首先声明我是一个初用thinkphp的菜鸟,大神们尽量回答的简单易懂一些啦后台的页面需要需要验证用户是否已经登陆,不能登陆则跳到登陆页,而登陆页面则不需要验证大神们都是如...
首先声明 我是一个初用thinkphp的菜鸟,大神们尽量回答的简单易懂一些啦
后台的页面需要需要验证用户是否已经登陆,不能登陆则跳到登陆页,而登陆页面则不需要验证
大神们都是如何做这个事情的呢、?
网上百度后有人说可以 新建一个CommonController类 ,其他所有页面的类都继承它,类似于钩子的一个功能,是这样子操作的吗,如果是这样的话,该如何操作
后台的所有页面继承的都是 controller 类 展开
后台的页面需要需要验证用户是否已经登陆,不能登陆则跳到登陆页,而登陆页面则不需要验证
大神们都是如何做这个事情的呢、?
网上百度后有人说可以 新建一个CommonController类 ,其他所有页面的类都继承它,类似于钩子的一个功能,是这样子操作的吗,如果是这样的话,该如何操作
后台的所有页面继承的都是 controller 类 展开
展开全部
目录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(){
}
//其他操作方法
}
展开全部
创建一个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(){
//你的登陆代码
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新建一个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{
}
=====================================
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()
这是一个自动运行的方法
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你先在一个页面上用,就是session嘛:if(Session::get('name')==null){跳转登录页},就一句话,很简单,然后你把这个在放到一个公用的controller里,比这个还简单,在你的项目里稍微找一下,类似的代码多的是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
纯手打,望采纳
-------------------------------------------------*---------------------------------------------
建立一个AdminController集成Controller
所有的后台操作控制器集成AdminController
在AdminController的构造方法里(_initialize)判断是否有用户登录时存进的session(或者自己用了别的方法),有和没有的执行内容就看你的业务需求了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询