这真让我疯了。我过去没有任何问题地使用过它。
所以我有一个Codeigniter安装,我有自动加载会话。我还自动加载一个名为" site" (site_helper.php)。
现在在site_helper中,我执行以下操作:
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
如果您想知道什么"欢迎"是,它是我的默认控制器。这在我工作的其他网站上运作良好。我完全失去了这里的问题。
感谢任何帮助!
答案 0 :(得分:4)
你试过吗
文件名: application / helpers / Site_helper.php “首字母必须全部为大写”
if ( ! function_exists('checkLogin'))
{
protected $CI;
function checkLogin(){
$this->CI =& get_instance();
$this->CI->load->library('session');
// This only returns the id does not set it.
return $this->CI->session->userdata('id');
}
}
http://www.codeigniter.com/user_guide/general/ancillary_classes.html
然后在控制器上
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;
答案 1 :(得分:1)
$ci->session->user['id'];
//replace with
$ci->session->userdata("session_variable_name");
如果它不起作用,请按照以下步骤操作 请检查您的PHP版本, 我也遇到过同样的问题,然后我知道我是在Codeigniter 2和PHP 5.6中构建应用程序的,我在Codeigniter 2.0和PHP 7.3版本中进行了检查,发现了此问题。因此,我尝试使用PHP 5.6版本,它可以正常工作。
答案 2 :(得分:0)
确保您在autoload.php文件中有自动加载会话libaray
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();
添加
的print_r($数据)
。你会得到有用的结果。