在null上调用成员函数userdata()

时间:2019-03-08 11:49:14

标签: php codeigniter

请帮助我!我不知道该怎么办。我需要你的帮助

Message: Call to a member function userdata() on null

Filename: /home/xxxxx/xxxxx.x.it/xxx/application/libraries/Auth.php

Line Number: 23

回溯:

(页) 功能:get_user

(控制器) 功能:_costruttor

    function get_user() {
    $name = $this->session->userdata('id');
    if ($name) {
    $this->obj->db->where("id",$this->obj->session->userdata("id"));
        $this->obj->db->where("ip",$this->obj->input->ip_address());
        $user= $this->obj->db->get("u_user")->row_array();
        if ($utente) {
            $this->user = $user;
        }
    }



class MY_Controller extends CI_Controller {
function _costruttor() {
    parent::__construct();
    $this->load->library("encrypt");
    $unlocked = array('login');
    $this->page->get_user();
    $this->load->driver('cache', array('adapter' => 'file', 'backup' => 'file'));
    if (!$this->page->get_user() AND ! in_array(strtolower(get_class($this)), $unlocked)) {
        $this->session->set_userdata('back_url', current_url());
        redirect('login/');
    }
}

}

2 个答案:

答案 0 :(得分:0)

我认为您忘记了包含session库。

有两种解决方法:

1)在页面中动态包含session库。

插入此

$this->load->library('session');

在一行之前。

$name = $this->session->userdata('id');

2)将其添加到自动加载库中:另一种方法是:

如果您全局需要它,请将其包含在

applications/config/autoload.php

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

假设全局需要databasesession

答案 1 :(得分:0)

错误很简单

Message: Call to a member function userdata() on null


Line Number: 23

意思是,在上述文件的第23行中,您正在这些行中进行操作

$this->session->userdata(/* something goes inside here */);

含义$this->session为空(在这种情况下它没有被实例化或不存在。您可以通过var_dump($this->session)来确认,之后是exit,如果它给出空值,则表示找到了麻烦)