Não dando access a determinado método no controlador quando a session não está definida no codeigniter

Eu quero que o usuário não acesse determinado método de controlador quando a session não está configurada. Para isso, posso verificar a session em todos os methods e, se a session estiver configurada, então vá para outro redirect para uma página específica. Como eu tenho muitos methods que eu não quero que o usuário tenha access se a session não estiver configurada. Seu volume passa por todo o método e verificação da session. Existe alguma maneira de access curto para obter essa funcionalidade.

Eu tentei verificar a session é o método do construtor do controlador, mas funciona para todo o método. Mas eu quero apenas um método específico para bloquear se a session não está configurada. Como fazer isso.

Exemplo:

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 } 

Acima do código, redireciona para verificar o controlador do usuário assim que a session ‘não verificada’ for encontrada quando o usuário entrar no controlador do painel de controle. Mas eu quero dar access a algum método de controle do painel. Não é todo o método. Onde esse código redirect sempre que a session for encontrada e não dar access a qualquer método de controle do painel.

Verifique isso. Pode ajudá-lo

 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. Somente param: a session de verificação existe apenas para funções / funções determinadas
  2. Excepto param: Não verifique a session para determinadas funções / funções
  3. No Param: verificar session para todas as funções no controlador e redirect

Você pode modificar a function _reuired_user de acordo com sua exigência

você pode tentar o seguinte – se ele ajuda

Crie na sua pasta do aplicativo / núcleo uma class chamada MY_Controller algo como

 class MY_Controller extends CI_Controller { public function checkUserSession() { if($this->session->userdata("unverified") != FALSE) { redirect("verify_user"); } return true; } } 

Depois disso, o seu controlador de painel deve parecer

 class dashboard extends MY_Controller { public function show_dashboard() { if ($this->checkUserSession()) { //your code } } } 

Crie uma biblioteca com qualquer nome que criei Usuários.

 class Users { public function __construct() { $this->ci =& get_instance(); } function _is_logged() { if(!$this->ci->session->has_userdata('unverified')) { redirect('verify_user'); } } } 

Carregue a biblioteca ou coloque-a no carregador automático em application/config/autoload.php

Em seguida, basta chamar a function na parte superior de seus methods, a qual você deseja restringir.

 function abc() { $this->users->_is_logged(); // your code } 

Esta não é uma resposta, mas uma sugestão baseada na minha experiência:

Como desenvolvedor, é fácil se é feito como a resposta acima mencionada por @ user1048123.

Mas, por exemplo, se você estiver acessando o método (ex: índice) para o qual a session não é necessária, mas ainda a function _required_user() método function _required_user() deve ser processado antes do índice ser exibido onde você deve ter uma matriz maior (ex: 30 methods em matriz nome). Isso diminuirá o tempo de carregamento dos methods para os quais a session não é necessária. Por isso, para um melhor desempenho, verifique se a session é o método (em cada método) para qual session é necessária para ser verificada.

Essa idéia pode ser mais antiga, mas isso realmente importa o desempenho quando você possui vários números ou usuários são maiores.

você pode verificar isso?

 function __construct() { parent::__construct(); } function chk_login() { if($this->session->userdata('logged_in')) { echo "some action"; } else { redirect('login'); } } 

No controlador

 load->library('session'); $this->load->model('dbmodel'); $this->load->helper('url','form'); } public function index() { $user = $this->session->userdata("unverified")//asign session value to variauble $result = $this->dbmodel->check_user($user);//check user validity if(empty($result)) { //user is not verified $this->load->view('unverified_loging'); } else { //user is verified $this->load->view('verified_loging'); } } 

No modelo

  public function check_user($user) { $query = $this->db->query("SELECT * FROM user WHERE ");//check with database $result = $query->result_array(); return $result; } 

Se o usuário estiver satisfeito com o usuário de validity , ele passa os dados para $result . Se não estiver satisfeito com a validity , retornará $result como NULL .

Então, no controlador, você pode verificar se o $result está vazio ou não