Codeigniter Redirect Loop для сеанса пользователя регистрируется в

Мой контроллер

class Backspaze extends CI_Controller { function __construct() { parent::__construct(); session_start(); $this->load->library('session'); $this->load->model('getDB'); $this->IsLogged(); } function IsLogged() { if (!$this->session->userdata('id')) { header('Location: '.base_url().'login'); } } function Login() { $this->load->view('Auth/Login'); } } 

.htaccess

  RewriteBase /backspaze RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] 

Я почти пробовал все, что доступно в Интернете, страница получает цикл переадресации, в то время как проверка для пользователя вошла в систему, пожалуйста, дайте мне несколько решений

MY Config $ config ['uri_protocol'] = 'AUTO';

Проверьте следующие пункты

  • В вашем случае вы не должны проверять сеанс на уровне constructor . , Означает, что ваш контроллер состоит из общедоступных и аутентифицированных страниц. Таким образом, это будет только цикл / перенаправление внутри этого контроллера.

  • Переместите условие проверки сеанса на определенную страницу и переадресовывайте его на страницу login если у вас нет сеанса для аутентифицированных страниц. Ниже я проверил страницу user_details которую я создал для вашего понимания.

  • В вашем методе входа в систему вы должны проверить already logged in or not и если да, то следует перейти на страницу dashboard . Я создал один метод для этого IsAlreadyLogged . пожалуйста, проверь это.

  • Не добавляйте session_start() в контроллер, который будет заботиться о ядре CI

  • Используйте встроенный метод redirect который является ядром CI.

  • Вы должны проверять сеанс на уровне конструктора, если все страницы должны быть аутентифицированы в контроллере.

,

 class Backspaze extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('session'); $this->load->model('getDB'); } function IsLogged() { if (!$this->session->userdata('id')) { redirect('login'); } } function IsAlreadyLogged() { if ($this->session->userdata('id')) { redirect('dashboard'); } } function user_details() { $this->IsLogged(); $this->load->view('user/details'); } function Login() { $this->IsAlreadyLogged(); $this->load->view('Auth/Login'); } } в class Backspaze extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('session'); $this->load->model('getDB'); } function IsLogged() { if (!$this->session->userdata('id')) { redirect('login'); } } function IsAlreadyLogged() { if ($this->session->userdata('id')) { redirect('dashboard'); } } function user_details() { $this->IsLogged(); $this->load->view('user/details'); } function Login() { $this->IsAlreadyLogged(); $this->load->view('Auth/Login'); } } 

удалите строку

 session_start(); 

codeigniter обрабатывает его сам.
Заменить это

 header('Location: '.base_url().'login'); 

с

  redirect(base_url()."login");` 

но убедитесь, что вы загрузили URL-адрес помощника