簡體   English   中英

獲取用戶名和密碼進行身份驗證

[英]Fetch Username and Password for Authentication

我嘗試通過將用戶名和密碼輸入與數據庫匹配來對用戶進行身份驗證。 密碼為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;
}

但是它不起作用,並拋出錯誤“在非對象上調用成員函數query()”。 這是查詢錯誤還是什么,我還沒有弄清楚。 任何幫助表示贊賞,謝謝。

更新:

在這里,我添加了init函數和validAction函數。 我在Netbeans上使用Zend Framework。 確實,$ this-> db為NULL,那么如何初始化它? 謝謝。

您的數據庫連接未初始化

像這樣做

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

然后您的查詢應該是

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM