php - 我的 session 在重定向时总是丢失数据

标签 php codeigniter authentication session

每次登录时,在模型中 session 都会正确接收所有数据,但是当页面重定向到主页时, session 数据就会消失。

我正在使用 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 之间,我进行了很多研究,但没有找到解决这个问题的方法。

遵循状态、预览和请求图像。

Status Code: 302 found

Preview

Request

最佳答案

您使用的是 Ci3 吗? 您是否在具有显示“home”方法的 Controller 中加载 session 库。

您可以在 Controller 或方法中加载库,如下所示:$this->load->library('session');或者您可以在任何地方自动加载 session 库 在 application/config/autoload.php 中添加 session 库。

更多请查看Auto loading in CodeIgniter 3

关于php - 我的 session 在重定向时总是丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65113917/

相关文章:

c# - SQL 数据库支持的 C# 和 ASP.Net 基于角色的身份验证控制

javascript - 使用 ReactJS 时如何将 JWT 存储在 cookie 中

javascript - 如何在 JavaScript 中编写 cookie 来记住用户名

php - 如何在 php mysql 博客系统中创建搜索引擎友好的 url?

php - 从 Swift 到 php 脚本的 Http post 请求

php - 注册Php错误不显示

php - 在一个网页中生成多个学生报告表

php - 使用 codeigniter 设置 cron 作业

facebook - Codeigniter Facebook 登录失败

php - 如何在动态生成的 jQuery UI 选项卡上避免 FOUC