Я пытаюсь выполнить аутентификацию пользователя путем сопоставления имени пользователя и пароля с базой данных. Пароль SHA1. Вот соответствующий код:Извлечение имени пользователя и пароля для проверки подлинности
public function init()
{
$bootstrap = $this->getInvokeArg('bootstrap');
$this->db = $bootstrap->getResource('auth');
$this->session = new Zend_Session_Namespace('login');
if(isset($this->session->isLogin)){
$this->_helper->redirector('/guestbook');
}
}
public function validAction()
{
if(!isset($this->session->isLogin)){
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string($_POST['password']);
$login = $this->loginLocal($username, $password);
if($login['username']!=''){
echo '{success:true, result:{message:\'Welcome, '.$username.'!\'}}';
} else {
echo '{success:false, errors:{reason:\'Login failed, try again.\'}}';
}
}
}
private function loginLocal($username, $password) {
$sql = "SELECT * FROM USER WHERE username = '".$username."' AND password = SHA1('".$password."')";
$fetch = $this->db->query($sql);
$login = $fetch->fetch();
return $login;
}
Но это не работает, с брошенной ошибкой «вызов функции элемент запроса() на не-объект». Является ли эта ошибка запроса или что, я не понял этого. Любая помощь приветствуется, спасибо.
UPDATE:
Здесь я добавить функцию инициализации и функцию validAction. Я использую Zend Framework для Netbeans. Действительно, $ this-> db NULL, так как мы можем его инициализировать? Спасибо.
Сообщение весь класс или блок кода, что внутри $ this-> db, кажется, что-то $ this-> db не инициализируется драйвером PDO –
Вы уверены, что '$ this-> db' был инициализирован? Попробуйте запустить 'var_dump ($ this-> db)'. – MicSokoli
Ошибка говорит о том, что не так. Это не ошибка запроса, он говорит, что вы пытаетесь выполнить функцию 'query()' на том, что не является объектом. Существенно означает, что '$ this-> db' не является объектом, который, как упоминает @MicSokoli, означает, что он не был инициализирован. – BizzyBob