2017-02-22 21 views
0

Я пытаюсь выполнить аутентификацию пользователя путем сопоставления имени пользователя и пароля с базой данных. Пароль 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, так как мы можем его инициализировать? Спасибо.

+0

Сообщение весь класс или блок кода, что внутри $ this-> db, кажется, что-то $ this-> db не инициализируется драйвером PDO –

+0

Вы уверены, что '$ this-> db' был инициализирован? Попробуйте запустить 'var_dump ($ this-> db)'. – MicSokoli

+0

Ошибка говорит о том, что не так. Это не ошибка запроса, он говорит, что вы пытаетесь выполнить функцию 'query()' на том, что не является объектом. Существенно означает, что '$ this-> db' не является объектом, который, как упоминает @MicSokoli, означает, что он не был инициализирован. – BizzyBob

ответ

0

Ваше подключение к базе данных не инициализируется

сделать это так

$db=new mysqli($server,$user,$pass,$databaseName) or die("Database error :".$db->error); 

Тогда ваш запрос должен быть

$fetch = $db->query($sql); 

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

  • Нет связанных вопросов^_^