首页 > 解决方案 > php验证散列密码在我的函数中不起作用

问题描述

我正在尝试为我的网站创建一个 API,为此我创建了一个函数。但是该功能无法使用 POST 功能在 POSTMAN 中验证我的密码。我一生都无法理解我错在哪里。

数据库中的密码使用 php 哈希函数放置:

    $password =password_hash($pass, PASSWORD_DEFAULT);                      

.

public function userLogin($username, $password){
    $stmt = $this->con->prepare("SELECT password FROM farms WHERE farmname = ? ");
    $stmt->bind_param("s", $username);
    $stmt->execute();
    $row = $stmt->get_result()->fetch_assoc();
    $hash = $row['password'];
    if (password_verify($hash, $password)) {
        return $stmt->num_rows > 0; 
    }
}

登录.php 文件

require_once '../includes/DbOperations.php';
$response = array();

if($_SERVER['REQUEST_METHOD']=='POST'){
    if(isset($_POST['username']) and isset($_POST['password'])){

        $db = new DbOperations(); 

        if($db->userLogin($_POST['username'], ($_POST['password']))){
            $user = $db->getUserByUsername($_POST['username']);
            $response['error'] = false; 
            $response['username'] = $user['farmname'];
        }else{
            $response['error'] = true; 
            $response['message'] = "Invalid username or password";          
        }
    }else{
        $response['error'] = true; 
        $response['message'] = "Required fields are missing";
    }
}

echo json_encode($response);

我没有得到用户名,而是不断收到错误消息:

{"error":true,"message":"用户名或密码无效"}

标签: phpfunctionmysqlipostman

解决方案


交换参数:

if (password_verify($password,$hash)) {

推荐阅读