获取:致命错误:在非对象上调用成员函数count()

时间:2013-11-30 10:55:35

标签: php scope static-methods

我正在使用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;
}

3 个答案:

答案 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){