编程语言
首页 > 编程语言> > PHP-为什么呼叫会话不起作用? (代码点火器3)

PHP-为什么呼叫会话不起作用? (代码点火器3)

作者:互联网

我的配置是这样的:

$config['sess_driver'] = 'database';  // select database driver
$config['sess_save_path'] = 'ci_sessions';  // name of the mysql table
$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 300;

我的自动加载是这样的:

$autoload['libraries'] = array('database', 'session', 'form_validation', 'functions');

在控制器login.php中:

$this->session->set_userdata('club', 'chelsea');

在控制器dashboard.php中:

echo $this->session->userdata('club');

如果使用其他控制器,则无法成功调用会话俱乐部

但是,当我在同一控制器(控制器login.php)中调用会话俱乐部时,它正在工作

我尝试$this-> library-> load(‘session’);在Dashboard.php的构造函数中.但这不是成功的

有什么解决方案可以解决我的问题吗?

谢谢

解决方法:

@Ali的答案表明将像这样在Dashboard.php的构造函数中工作或加载会话库.

class Dashboard extends CI_Controller
{
  public function __construct()
  {
    parent::__construct();
    $this->load->library('session');
  }

  //the rest of controller's code
}

或者,如果您只需要控制器内某个特定功能中的会话,则改为在该功能中加载库.

关键是必须在某个位置加载该库,然后才能对其函数进行调用.

在控制器中自动加载或显式加载会话的选择可能取决于您的站点需要使用会话的频率.如果每个控制器都使用它们,则选择自动加载.如果仅在少数几个地方需要会话,则将资源加载到不使用它们的位置会浪费资源.

标签:codeigniter-3,codeigniter,session,mysql,php
来源: https://codeday.me/bug/20191027/1941053.html