获取用于验证的用户名和密码

时间:2017-02-22 08:59:53

标签: php mysql sql database 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,那么我们如何初始化呢?谢谢。

1 个答案:

答案 0 :(得分:0)

您的数据库连接未初始化

这样做

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

然后你的查询应该是

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