【问题标题】:CodeIgniter - Why can't I access a session set from a controller in another controller?CodeIgniter - 为什么我不能从另一个控制器中的控制器访问会话集?
【发布时间】:2020-05-22 03:29:47
【问题描述】:

这是 Thisclass 控制器,我最初在其中设置了一个会话变量,其中 $data 是一个包含从数据库中获取的值的数组

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    /**
    * 
    */
    class Thisclass extends CI_Controller
    {
        function __construct()
        {
            parent::__construct();
        }

        function index()
        {
            // The code for fetching values is here
            $this->session->set_userdata("mysession",$data);
        }
    }//end class
?>

这是我试图访问该变量的另一个类控制器

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* 
*/
class Anotherclass extends CI_Controller
{   
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        var_dump($this->session->userdata('mysession'));
    }
}//end class

但是,var_dump 返回 null。我已经检查了会话库,它包含在 autoload.php 中。我一次又一次地检查了索引,它匹配了。那么,我不能调用该变量的原因可能是什么?在 Web 服务器中,它确实有效。会话变量可以在另一个控制器中访问,在这个本地副本中,它似乎不起作用。我已经检查了必要的设置,看起来还不错。谢谢你的帮助..

【问题讨论】:

  • 这可能是服务器和本地主机的设置不同,如果是这样,我应该检查哪些设置?
  • 不要忘记在自动加载应用程序/config/autoload.php 中添加会话库 $autoload['libraries'] = array('session');或加载控制器 __contruct() 函数 $this->load->library('session');
  • 您传递的 $data 在哪里? $this->session->set_userdata("mysession",$data);

标签: php codeigniter web-development-server


【解决方案1】:

对于这种特定情况,此解决方案有效。

我在xampp的php.ini中把session.auto_start=0改成了session.auto_start=1。 我在这里找到了答案:php - Session are lost after redirect in CodeIgniter 3

我意识到这是关于 Web 服务器配置的问题。

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多