Мой контроллер
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'); } }
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-адрес помощника