在codeigniter中未设置会话时,不允许访问控制器中的某些方法

use*_*153 17 php session codeigniter

我希望用户在未设置会话时不访问控制器的某些方法.为此,我可以在所有方法中检查会话,如果设置了会话,那么只需转到其他地方重定向到特定页面.由于我有很多方法,如果没有设置会话,我不希望用户访问.它的批量通过所有方法和检查会话.有没有任何快捷方式来获得此功能.

我试过检查会话是控制器的构造函数方法,但它适用于所有方法.但我只想要特定的方法来阻止会话未设置.怎么做.

例:

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
}
Run Code Online (Sandbox Code Playgroud)

上面的代码,当用户转到仪表板控制器时,一旦找到"未验证"会话,就会重定向到verify_user控制器.但是我希望能够访问仪表板控制器的某些方法.不是所有方法.每当发现会话时此代码重定向,并且不允许访问仪表板控制器的任何方法.

sha*_*fiq 13

检查这可能会对你有所帮助

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
    */
    }
 }
Run Code Online (Sandbox Code Playgroud)
  1. 只有param:只有给定的函数/函数才存在check session
  2. 除了param:不检查给定函数/函数的会话
  3. No Param:检查控制器和重定向中所有功能的会话

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