Php CodeIgniter-无法访问帮助程序中的会话
这真让我抓狂。我过去使用过这个,没有任何问题 所以我有一个Codeigniter安装,在其中我自动加载了会话。我还自动加载了一个名为“site”(site_helper.php)的助手 现在在site_helper中,我执行以下操作:Php CodeIgniter-无法访问帮助程序中的会话,php,codeigniter,session,Php,Codeigniter,Session,这真让我抓狂。我过去使用过这个,没有任何问题 所以我有一个Codeigniter安装,在其中我自动加载了会话。我还自动加载了一个名为“site”(site_helper.php)的助手 现在在site_helper中,我执行以下操作: function checkLogin(){ $ci = &get_instance(); $session = $ci->session->user['id']; //this line throws errow } checkLo
function checkLogin(){
$ci = &get_instance();
$session = $ci->session->user['id']; //this line throws errow
}
checkLogin();
我得到的结果是:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Welcome::$session
Filename: helpers/site_helper.php
Line Number: 15
如果您想知道什么是“欢迎”,它是我的默认控制器。这在我工作过的其他网站上效果很好。我完全不知道这里有什么问题
感谢您的帮助 你试过了吗
文件名:application/helpers/Site\u helper.php“第一个字母必须大写”
然后在控制器上
public function somefunction()
{
$this->load->helper('site');
// Test only
echo checkLogin();
}
确保在使用缓存文件夹时已设置会话保存路径。这就是我建立我的公司的方式。具有文件夹权限0700
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH . 'cache/session/';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;
可能您忘记加载会话库了 function checkLogin(){ $ci = &get_instance(); //load the session library $ci->load->library('session'); $session = $ci->session->user['id']; //this line throws errow } 函数checkLogin(){ $ci=&get_instance(); //加载会话库 $ci->load->library('session'); $session=$ci->session->user['id'];//此行抛出错误 }
确保autoload.php文件中有自动加载会话库 Autoload.php :$autoload['libraries']=array('session') 要访问会话变量,请执行以下操作:
$CI = & get_instance();
//or you can load library in the site helper also
$CI->load->library('email');
$data = $CI->session->all_userdata();
加
打印(数据)
。你会得到有用的结果
$ci->session->user['id'];
//replace with
$ci->session->userdata("session_variable_name");
如果不起作用,请按照下面的说明操作
请检查您的PHP版本,
我也遇到了同样的问题,然后我知道我是在Codeigniter 2和PHP5.6中构建应用程序的,我用Codeigniter 2.0和PHP7.3版本检查了这个问题。因此,我尝试使用PHP5.6版本,它成功了。是否加载了会话库的可能副本?@Difster:否,这不是副本,因为我没有将任何内容传递给帮助程序。@VincentDecaux是的,它加载正确。
=&
应该是=
不确定这是否是原因。。但是<代码>$ci=&get_instance()代码>
$ci->session->user['id'];
//replace with
$ci->session->userdata("session_variable_name");