php - 获取用户名和密码进行身份验证

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

最佳答案

您的数据库连接尚未初始化

这样做

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

那么你的查询应该是

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

关于php - 获取用户名和密码进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386848/

相关文章:

php - mysqldump-php 不适用于共享托管公司数据库。没有命令行访问权限或 super 权限

MySQL:使用 Group By 更新字段

php - 在 MySQL 和 Laravel 中预订

php - 脚本中的多个 PDO 查询

php - 在更新值之前获取 mysql 表中值的差异

mysql - rails : Garble data as it leaves the database

php - Where 子句似乎不起作用

php - Eve API xml 到 php

c# - 将 String、Float 和 DateTime 值插入 sql 表

sql - 从连接行中选择不同的字段