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:ここで私はinit関数とvalidAction機能を追加し
。私はNetbeansでZend Frameworkを使用しています。確かに、$ this-> dbはNULLなので、どのように初期化できますか?ありがとうございました。
ポストする必要があります。この
のようにそれを実行してください> db、何とか$ this-> dbと思われます。これはPDOドライバで初期化されていません –
'$ this-> db'は初期化されていますか? 'var_dump($ this-> db)'を実行してみてください。 – MicSokoli
エラーは何が間違っているかを示しています。これはクエリエラーではなく、オブジェクトではないものに対して 'query()'関数を実行しようとしているということです。基本的に '$ this-> db'は@MicSokoliという名前のオブジェクトではなく、初期化されていないことを意味します。 – BizzyBob