CodeIgniter -无法访问帮助程序中的会话

mum43rcc  于 2022-12-07  发布在  其他
关注(0)|答案(5)|浏览(121)

这真的让我抓狂了,我过去用过这个没有任何问题。
所以我有一个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

如果你想知道什么是“欢迎”,它是我的默认控制器。这在我工作过的其他网站上运行得很好。我完全不知道这里的问题是什么。
任何帮助都是感激不尽的!

dldeef67

dldeef671#

你有没有试过
文件名: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;
smdncfj3

smdncfj32#

$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版本,它的工作。

wlwcrazw

wlwcrazw3#

也许您忘记了加载会话库

function checkLogin(){
      $ci = &get_instance();

      //load the session library
      $ci->load->library('session');

      $session = $ci->session->user['id']; //this line throws errow
    }
llew8vvj

llew8vvj4#

确保在autoload.php文件中有自动加载会话库
自动加载. php:数组('会话');
对于访问会话变量:

$CI = & get_instance();
//or you can load library in the site helper also
 $CI->load->library('email');
 $data = $CI->session->all_userdata();

新增
打印_r($数据)
。您将获得有用的结果。

dgjrabp2

dgjrabp25#

这就是我在Login.php控制器中进行身份验证时知道“logged_in”是会话密钥的方法

function isLoggedIn()
{
    $ci = &get_instance();
    $ci->load->library('session');
    $session =  $ci->session->userdata('logged_in');
    return (!empty($session))  ? true : false;
}

相关问题