我正在使用php 5.3.13。这个脚本用于登录记住我的系统但是当我用“记住我”登录时,它给了我这个:
致命错误:在C:\ wamp \ www \ oops_login_system \ ooplr \ classes \ User.php中的非对象上调用成员函数count()
代码如下:
的login.php
$user = new User();
$remember = (Input::get('remember') === 'on') ? TRUE : FALSE;
$login = $user->login(Input::get('username'), Input::get('password'), $remember);
user.php的
public function login($username = null, $password = null, $remember = FALSE) {
if (!$username && !$password && !$this->exists()) {
Session::put($this->_sessionName, $this->data()->id);
} else {
$user = $this->find($username);
if ($user) {
if ($this->data()->password === Hash::make($password, $this->data()->salt)) {
Session::put($this->_sessionName, $this->data()->id);
if ($remember) {
$hash = Hash::unique();
$hashCheck = $this->_db->get('user_session', array('user_id', '=', $this->data()->id));
if (!$hashCheck->count()) {
$this->_db->insert('users_session', array(
'user_id' => $this->data()->id,
'hash' => $hash
));
} else {
$hash = $hashCheck->first()->hash;
}
Cookie::put($this->_cookieName, $hash, config::get('remember/cookie_expiry'));
}
return TRUE;
}
}
}
return false;
}
答案 0 :(得分:1)
在这一行:
$hashCheck = $this->_db->get('user_session', array('user_id', '=', $this->data()->id));
你得到的东西不是对象,所以你不能在下一行中调用$hashCheck->count()
。你应该得到什么以及为什么(这是一个错误或计划行为)。
答案 1 :(得分:1)
您可以在代码中查看以下内容。 $ hashCheck = $ this-> _db-> get(' user_session',array(' user_id',' =',$ this-> data () - > ID));
应该是$ hashCheck = $ this-> _db-> get(' users_session',xxxxxxxxx
计数在users_session表中查找,但是您正在尝试获取不存在的表。
这就是我的理解。
答案 2 :(得分:0)
尝试
count($hashCheck)
的缺陷
$hashCheck->count()
如果不起作用,那么$ hashCheck为null,然后变换行
if (!$hashCheck->count()) {
到
if ($hashCheck && $hashCheck->count() > 0){