【问题标题】:Session variable not working in other controller (CodeIgniter)会话变量在其他控制器中不起作用(CodeIgniter)
【发布时间】:2017-08-03 02:20:21
【问题描述】:

成功登录后,我在登录控制器中设置了一个会话变量。当我在仪表板控制器中检查变量时,没有找到会话数据。

当我在登录控制器中检查会话时,会话数据存在。当我检查仪表板控制器时它不存在。我也尝试过使用数据库会话,但没有成功。

我正在使用带有 HMVC(基于模块的 MX 控制器)的 CodeIgniter 3.1.3。下面是我当前问题的代码和屏幕截图。

我的会话配置文件

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH . 'cache/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

附件一

附件二

附件3

附件4

块引用

【问题讨论】:

  • 首先找出这是否与 CI 相关的问题,因为船上有很多可能性...
  • 似乎session_start 没有在Dashboardcontroller 上调用

标签: php codeigniter session codeigniter-hmvc


【解决方案1】:

您可能会错过在Dashboardcontroller 中加载session 库。所以首先使用以下方法加载它:

class Dashboardcontroller extends CI_Controller{
function __construct(){
    $this->load->library('session');//loads session library
}

那就试试

 print_r($_SESSION)

print_r($this->session->all_userdata());

【讨论】:

  • $this->load->library('session');已由 autoload.php 加载
  • @Md.HimelAli 您能否向autoload.php 提供一些上下文,该上下文调用$this->load->library('session'); 添加到您的问题中?
【解决方案2】:

如果您没有加载会话库表单,则需要先加载。试试这个方法。

$this->load->library('session');
$this->session->userdata('your_session_variable'); // get single value
or
print_r($this->session->userdata);
or
print_r($this->session->all_userdata()); // get all session data but deprocated in newer version

【讨论】:

  • $this->load->library('session');由 autoload.php 加载并尝试 print_r($this->session->userdata);或 print_r($this->session->all_userdata());出现同样的问题..
  • 使用本机会话驱动程序代替文件。 $config['sess_driver'] = 'native' 然后检查。如果有效,则检查 APPPATH 的文件权限。 'cache/' 有写权限,然后改变 $config['sess_driver'] = 'files'
  • 为了您的好意,当我启动我的电脑时它工作正常。在我的 loaclhost 中使用了很多次之后,这个问题已经出现了。然后浏览器历史记录和 coockie 已删除然后工作正常。不光是我的电脑,3台电脑都出现这个问题。
【解决方案3】:

print_r($_SESSION) 在 CI 中不起作用。在 Codeigniter 中,我们必须编写以下语法。

print_r($this->session->userdata); 

print_r($this->session->all_userdata());

【讨论】:

  • print_r($this->session->userdata);或 print_r($this->session->all_userdata());已经尝试过同样的问题...
猜你喜欢
  • 2020-05-24
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多