php - 我想知道一个 php 7.4 在登录脚本上给我带来了麻烦
问题描述
当没有用户存在时会出现问题,因为 PHP 7.4false
在此处 返回$fetched = $check->fetch();
那么如何处理这种情况
$name = $_POST['name'];
$pass = $_POST['pass'];
$check = $db->prepare("SELECT id, name, pass FROM users WHERE name = ?");
$check->execute([$name]);
$fetched = $check->fetch();
if (password_verify($pass, $fetched['pass']) && ($name === $fetched['name']){
header('Location: home');
} else {
echo 'This account not exists';
}
但我不知道为什么没有这个工作password_verify()
,看
if ($check->rowCount() > 0 ) {
} else {
}
解决方案
添加检查$fetched
:
if ($fetched && password_verify($pass, $fetched['pass'])) {
header('Location: home');
} else {
echo "Invalid username or password";
}
没有必要测试$fetch['name']
。它保证等于$name
因为WHERE name = ?
推荐阅读
- javascript - 聚合不适用于 $geoNear
- c++ - 散列 3d 坐标时的频繁散列冲突
- azure - 有没有办法使用 CLI 扩展使用 README.md 文件初始化 GIT 存储库主分支?
- python - 如何使用python将字符串'5a'增加到'5b'
- sql - 如何更新 postgres 中的特定数组
- c# - 如何在使用 AAD 进行身份验证的 ASP.NET MVC 站点中以登录用户身份查询 Dynamics 365 CRM?
- swift - 在 GUI 应用程序中使用 runloop 调度 IOHIDManager
- twitter-bootstrap - Bootstrap 5 navbar-brand 和 navbar-toggler 行为
- transformation - 在 Kentico 中查看和下载通过表单上传的文件
- python - 为什么网页抓取 Steam 游戏列表时 div 返回空?