CodeIgniter - 无法访问帮助程序

时间:2017-08-07 18:55:51

标签: php codeigniter session

这真让我疯了。我过去没有任何问题地使用过它。

所以我有一个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

如果您想知道什么"欢迎"是,它是我的默认控制器。这在我工作的其他网站上运作良好。我完全失去了这里的问题。

感谢任何帮助!

3 个答案:

答案 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($数据)

。你会得到有用的结果。