您好我在Auth.php
中创建了一个库application/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
文件名:libraries / Auth.php
行号:14
我做错了什么?
答案 0 :(得分: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');
)
答案 1 :(得分:0)
在Codeigniter库文件中,您无法在没有CI实例对象/变量的情况下使用$ this加载任何模型,配置或任何外部库
对于第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 intance对象,如下所示:
$this->CI =&get_instance();
$this->CI->load->model('adminmodels/login_model');
在您采取上述第二种选择之前。
可以帮你... 感谢