2013-11-30 2 views
0

Я использую php 5.3.13. Этот скрипт для входа в систему запомнить меня, но когда я логин с «запомнить меня» это дает мне это:Получение: Неустранимая ошибка: вызов функции-члена count() для не-объекта

Fatal error: Call to a member function count() on a non-object in C:\wamp\www\oops_login_system\ooplr\classes\User.php

код выглядит следующим образом:

login.php

$user = new User(); 
$remember = (Input::get('remember') === 'on') ? TRUE : FALSE; 
$login = $user->login(Input::get('username'), Input::get('password'), $remember); 

пользователь .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

Не могли бы вы предоставить var_dump $ hashCheck - возможно, это null вместо коллекции – P0rnflake

+0

его возвращающий bool false. – Rahul

+0

Итак, это ваша проблема, вы проверили, есть ли у пользователя сеанс с предоставленным ID в базе данных? – P0rnflake

ответ

1

В этой строке:

$hashCheck = $this->_db->get('user_session', array('user_id', '=', $this->data()->id)); 

Вы получаете то, что не является объектом, поэтому вы не можете позвонить $hashCheck->count() в следующей строке. Вы должны знать, что именно вы получаете и почему (это ошибка или запланированное поведение).

+0

, так что я должен делать? любезно дайте любую идею ... – Rahul

0

попробовать

count($hashCheck) 

indesd из

$hashCheck->count() 

если не работал, так что $ hashCheck равна нулю, то Ставить линию

if (!$hashCheck->count()) { 

в

if ($hashCheck && $hashCheck->count() > 0){ 
+0

нет ее не работает кто может дать лучшую идею .. ?? – Rahul

+0

отредактирован ответ. попробуйте еще раз – Mehdi

+0

Теперь его снова дается Фатальная ошибка: вызовите функцию-член first() для не-объекта в C: \ wamp \ www \ oops_login_system \ ooplr \ classes \ User.php любезно предоставите любую другую идею .. – Rahul

1

Привет, проверьте в своем коде следующее. $ hashCheck = $ this -> _ db-> get ('user_session', array ('user_id', '=', $ this-> data() -> id));

Она должна быть $ hashCheck = $ это -.> _ Db-> Get ('users_session', XXXXXXXXX

Количество выглядит в users_session таблице, но у пытаются получить таблицу, в которой не существует

Ну, вот как я это понимаю.

Смежные вопросы