Мой сеанс всегда теряет данные при перенаправлении

#php #codeigniter #authentication #session

#php #codeigniter #аутентификация #сеанс

Вопрос:

Каждый раз, когда я вхожу в систему, в модели сеанс получает все данные правильно, но когда страница перенаправляется на главную страницу, данные сеанса исчезают.

Я использую codeigniter, и это код модели:

     <?php
    defined('BASEPATH') OR exit('No direct script access allowed');

    class Login extends CI_Controller {
    
    public function __construct()
    {
        parent::__construct();
        if (isset($_SESSION['id_usuario']))
           redirect(base_url());
        $this->load->model('blogueiro_model');
        $this->load->model('pagina_model');
        $this->load->library('form_validation');
    }
    
    public function index()
    {
        $this->load->view('login.php');
    }
    
    public function checa()
    {
        if ( ! $this->input->post())
            show_404();
        
        $this->form_validation->set_rules('login', 'login', 'required');
        $this->form_validation->set_rules('password', 'password', 'required');
        
        $login = html_escape($this->input->post('login'));
        $senha = html_escape($this->input->post('password'));
        
        if ($this->form_validation->run() === TRUE) 
        {
            $usuario = $this->blogueiro_model->autentica($login, $senha);
            
            if ($usuario !== NULL)
            {
                $this->session->set_userdata('id_usuario', $usuario->id);
                $this->session->set_userdata('nome_usuario', $usuario->nome);
                $this->session->set_userdata('login_usuario', $usuario->login);
                $this->session->set_userdata('e_admin', $usuario->e_admin);
                $this->session->set_userdata('foto', $usuario->foto);
                $permissoes = ($usuario->e_admin == 0) ? $this->blogueiro_model->busca_permissoes($usuario->id) : $this->blogueiro_model->lista_todas_permissoes();
                $this->session->set_userdata('permissoes', $permissoes);
                $this->blogueiro_model->limpa_trials($login);

            }
            else
            {
                $this->blogueiro_model->incrementa_trials($login);
                $this->index();
                
            }
        }
        else
        {
            $this->index();
        }
        redirect(base_url());
    }
}
 

Еще одна вещь, которую я заметил, это то, что код состояния всегда находится между 302 и 303, я много исследовал, но не нашел решения этой проблемы.

Следите за статусом, просматривайте и запрашивайте изображения.

Код состояния: найдено 302

Предварительный просмотр

Запрос

Ответ №1:

Вы используете Ci3? Загружаете ли вы библиотеку сеансов в контроллер, у которого есть метод, который показывает «home».

Вы можете загрузить библиотеку в контроллер или методы, подобные этому: $this->load->library('session'); или вы просто можете автоматически загружать библиотеку сеансов везде, добавляя библиотеку сеансов application/config/autoload.php .

Для получения дополнительной информации, пожалуйста, проверьте автоматическую загрузку в CodeIgniter 3

Комментарии:

1. Да, я использую Ci3, я также уже использую автозагрузку, но она по-прежнему выдает мне ошибку.

2. @LeandroSoares какую ошибку он показывает. Также используйте методы библиотечного сеанса для работы с сеансами.

Ответ №2:

Попробуйте так

 $_SESSION['id_usuario'] = (int) $usuario->id;
$_SESSION['nome_usuario'] = (string) $usuario->nome;