我尝试通过将用户名和密码输入与数据库进行匹配来验证用户身份。密码是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,那么我们如何初始化呢?谢谢。
答案 0 :(得分:0)
您的数据库连接未初始化
这样做
$db=new mysqli($server,$user,$pass,$databaseName) or die("Database error :".$db->error);
然后你的查询应该是
$fetch = $db->query($sql);