Перенаправление Codeigniter не работает в методе __construct - PullRequest
0 голосов
/ 30 октября 2019

Я проверяю, вошел ли пользователь в метод конструктора, если он не вошел в систему, затем перенаправить в метод входа, но он зацикливается, метод time.login определен в том же контроллере.

проблема:1) Для целей тестирования я только что написал тот же метод (login) в контроллере «Welcome», в этом случае он работает нормально и перенаправляет отлично, после этого я прокомментировал метод в контроллере «Welcome», и теперь метод входа теперь не комментируется в контроллере пользователя. это не работает

class User extends CI_Controller {

    function __construct() {
        parent::__construct();

        is_logged_in();   // defined in custom helper
        if (!is_logged_in()) {
        redirect(base_url().'User/Login');

        }
    }

    public function login(){

      $this->load->view('loginpage');
    }

}


//code in custom helper

function is_logged_in() {
    $CI =& get_instance();
  $user = $CI->session->userdata('id');
  if (!isset($user)) { 
   return false; 
  } 
 else { 
   return true;
 }
} 

Ответы [ 4 ]

0 голосов
/ 31 октября 2019

Я полагаю, вы автоматически загружаете своего помощника. Может быть, ваша вспомогательная функция должна быть изменена

function is_logged_in() {
     $CI =& get_instance();
     $user = $CI->session->userdata('id');
     if (!isset($user) || is_null($user)|| empty($user)) { 
         return false; 
      }else { 
         return true;
      }
    }  
0 голосов
/ 31 октября 2019

Попробуйте так. Это работает нормально.

Контроллер

function __construct(){
    parent::__construct();
    if(!is_login()){
       redirect(site_url().'/User/login');
    }
}

Помощник

function is_login(){
    //Your Logic
    return false;
}

autoload.php

$autoload['helper'] = array('your_helper_class_name');
0 голосов
/ 31 октября 2019

Пожалуйста, используйте помощник в контроллере.

class User extends CI_Controller {

function __construct() {
    parent::__construct();
    $this->load->helper('name');
     $checkLogin = $this->helperName->is_logged_in();   // defined in custom helper
    if (!$checkLogin) {
    redirect(base_url().'User/Login');

    }
}
0 голосов
/ 30 октября 2019

если ваш помощник возвращает false, ваш код никогда не достигает функции входа в систему контроллера, он всегда проходит мимо конструктора, который перенаправляет и так далее ...

изменить это:

    if (!is_logged_in()) {
      $this->login();
    }

теперь он вызывает функцию входа в систему, если не logged_in (), в противном случае он продолжает работу с функцией index () контроллера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...