当在codeigniter中未设置会话时,不能访问控制器中的某种方法 [英] Not giving access to certain method in controller when session is not set in codeigniter

查看:112
本文介绍了当在codeigniter中未设置会话时,不能访问控制器中的某种方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望用户在未设置会话时不访问控制器的某种方法。为此,我可以检查所有方法中的会话,如果会话设置,然后只去到furthur,否则重定向到特定的页面。因为我有很多方法,我不想让用户访问,如果会话未设置。它的大量通过所有的方法和检查会话。是否有任何快捷方式获得此功能。

I want user to not access certain method of controller when session is not set. For this I can check session in all method and if session is set then only go to furthur else redirect to specific page. Since I have many method that I don't want user to take access if session is not set. Its bulk to go through all method and check session. Are there any shortcut way to obtain this functionality.

我尝试检查会话是控制器的构造函数方法,但它适用于所有的方法。但我想只有特定的方法来阻止如果没有设置会话。如何做。

I tried checking session is constructor method of controller but it works for all method. But I want only specific method to block if session is not set. How to do it.

示例:

class dashboard extends CI_Controller {

 function __construct() {
    parent::__construct();
    $this->load->library('session');
    $this->load->model('dbmodel');
    $this->load->helper('url','form');


    //verified user check
    if($this->session->userdata("unverified") != FALSE) {
        redirect("verify_user");  

    }

    }
    //verified user check
}

上面的代码,当用户转到仪表板控制器时,发现未验证会话后,重定向到verify_user控制器。但我想给予访问仪表板控制器的一些方法。不是所有的方法。

Above code, redirects to verify_user controller as soon as 'unverified' session is found when user go to dashboard controller. But I want to give access to some method of dashboard controller. Not all method. Where as this code redirects whenever session is found and don't give access to any method of dashboard controller.

推荐答案

检查此项目可能会帮助你

Check this It might help you

class MY_controller extends CI_controller{
    function __construct() {
        parent::__construct();
    }
    function _required_user($params =array()){
        $action =$this->router->fetch_method();
        if(empty($params['except']))
            $params['except'] =array();
        if(empty($params['only']))
            $params['only'] =array();
        if(count($params['except']) > 0 && in_array($action,$params['except']))
            return true;    
        if(count($params['only']) > 0 && in_array($action,$params['only']) && $this->session->userdata('is_login'))
            return true;
        if($this->session->userdata('is_login'))    
            return true;
        redirect('login');  

    }       
}

class dashboard extends MY_Controller {

  function __construct() {
        parent::__construct();
        $this->load->library('session');
        $this->load->model('dbmodel');
        $this->load->helper('url','form');
        $this->_required_user(array('except'=>array('index')))      
    }
    function add(){
    /*
    Session required
    */  
    }
    function edit(){
    /*
    Session required
    */  
    }
    function index(){
    /*
    no session required
    */
    }
  }

 class content extends MY_Controller{
    function __construct() {
        parent::__construct();
        $this->load->library('session');
        $this->load->model('dbmodel');
        $this->load->helper('url','form');
        $this->_required_user(array('only'=>array('index')))        
    }
    function add(){
    /*
    no Session required
    */  
    }
    function edit(){
    /*
    no Session required
    */  
    }
    function index(){
    /*
    session required
    */
    }
 }  
class Myaccount extends MY_Controller{
    function __construct() {
        parent::__construct();
        /*
        for all functions session required
        */
        $this->_required_user()     

    }
    function edit(){
    /*
    session required
    */
    }
    function save(){
    /*
    session required
    */
    }
 }





  1. 除了param:不检查给定功能/功能的会话

  2. 无参数:检查会话对于控制器和重定向中的所有函数

您可以根据需要修改_reuired_user函数

You can modified _reuired_user function according to your requirement

这篇关于当在codeigniter中未设置会话时,不能访问控制器中的某种方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆