0

您好,我已经创建了一个库Auth.phpapplication/libraries验证当前用户是否登录。所以我的控制器是:

$session_data = $this->session->userdata('logged_in');
$this->load->library('Auth');
$auth = new Auth;
$user_id = $auth->authenticate($session_data);

和图书馆:

class Auth{
    function authenticate($vars){

        $CI =&get_instance();
        $CI->load->model('adminmodels/login_model');

        $username = $vars['username'];
        $password = $vars['password'];
        $user_id = $vars['user_id'];;
        $user_type = $vars['user_type'];

        $check_login = $this->login_model->login($username,$password); //Line 14

        if($check_login){
            $user_id = $user_id;
        }else{
            $user_id = 0;
        }

        return $user_id;
   }
}

但它显示如下错误:

遇到 PHP 错误

严重性:通知

消息:未定义的属性:Auth::$login_model

文件名:库/Auth.php

行号:14

我在做什么错??

4

2 回答 2

1

虽然通常是正确的,但在 CI 中,您应该像这样调用库,而不是使用new关键字:

$this->load->library('Auth');
$user_id = $this->auth->authenticate($session_data);

此外,由于您将全局 CI 对象分配给了一个变量,因此您不能使用$this它来引用它:

    $check_login = $this->login_model->login($username,$password); //Line 14

应该:

    $check_login = $CI->login_model->login($username,$password); //Line 14

(因为您在那里加载了模型$CI->load->model('adminmodels/login_model');:)

于 2013-10-07T07:10:07.117 回答
0

在 Codeigniter 库文件中,您无法在没有 CI 实例对象/变量的情况下使用 $this 通过 pass 加载任何模型、配置或任何外部库

对于您在第 14 行的 Auth.php 中的情况,您错了:

$check_login = $this->login_model->login($username,$password); //Line 14

它应该是这样的(如果仅从内部函数访问):

$check_login = $CI->login_model->login($username,$password); //Line 14

或者,如果从 Auth 类中的任何函数访问:

$check_login = $this->CI->login_model->login($username,$password); //Line 14

但首先,您必须像这样在构造函数中创建 CI 实例对象:

$this->CI =&get_instance();
$this->CI->load->model('adminmodels/login_model');

在您采取上述第二种选择之前。

可以帮助你...谢谢

于 2013-10-07T08:52:01.597 回答