为什么在使用 "redirect" 函数重定向到其他控制器后,CODEIGNITER 会丢失 session?

Why does CODEIGNITER lost session after redirect to other controller by using "redirect" function?

我正在学习 codeigniter。我正在尝试编写登录系统代码,在完美登录后我想将页面重定向到另一个控制器。重定向后,我无法获取用户 session 数据。但是,当我手动转到该页面时,我可以获得 session 数据。有解决办法吗?

我为session做了什么:

$this->session->set_userdata('userid', $user->user_id); //in login controller

echo "userid: ".$this->session->userdata('userid'); // in profile controller

codigniter 版本:3.1.11 php 版本:7.3.7

注意:网上关于“session.php”

的所有解决方案我都试过了

编辑:

  class Profilim extends CI_Controller
   {  
      public function index() 
      {          
         
         echo "profilim userid: ".$this->session->userdata('userid');
      } 
   } 


   class Giris extends CI_Controller
   {  

      public function index() 
      { 
         
         $this->load->model("GirisModel");



         if($this->input->post('giris')){

            $data["loginmessage"] = "";
            $data["login_status"] = false;

            $email = $this->input->post('email');
            $password = $this->input->post('password');

            $result = $this->GirisModel->isUserExist($email,$password);
            

            if($result->num_rows()){
               $data["loginmessage"]="Giriş Başarılı!";
               $data["login_status"]=true;

               $user = $result->row();
               
               $this->session->set_userdata('userid', $user->user_id);

               
   
               /*Redirect the user to some internal controller’s method*/ 
               redirect('Profilim','refresh'); 

            }
            else{
               $data["loginmessage"]="Yanlış şifre veya kullanıcı adı!";
               $data["login_status"]=false;
            }
            $this->load->view("giris",$data);
         }else{
            $this->load->view("giris");
         }
         
      } 
   } 

你可以试试这个(备份命名文件后):https://ganganga.in/2019/09/17/codeigniter-3-x-x-and-php-7-x-x-session-lost-while-redirect/

Codeigniter 3 基于 PHP 5,但在一定程度上适用于 PHP 7。

我找到了解决方案:

如果你没有在 config.php 文件中设置 base_url 它会将页面重定向到 http://[::1]/something 所以如果你改变你的基础 [=16] 它会删除会话=] 本地主机有效