php - 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":"用户名或密码无效"}
解决方案
交换参数:
if (password_verify($password,$hash)) {
推荐阅读
- terraform - 有什么方法可以跟踪 terraform.exe 对提供者进行的 REST 调用?
- sitefinity - sitefinity 小部件搜索表
- bash - 使用 gnu find 命令匹配带有斜杠的子路径
- python - Pydap客户端UnicodeDecodeError:'utf-8'编解码器无法解码位置1的字节0x8b:无效的起始字节
- c - Segfault,我无法弄清楚原因
- javascript - 在选择 onchange 上运行 PHP 函数
- python - 使用 a+ 时找不到文件
- sql - 根据 parentId 和最小值更新数据库中的记录
- redirect - Rspec:期望(请求).to not_redirect?(redirect_to 的对面)
- java - 获取两次之间的毫秒数