如何解决警告:尝试访问第 22 行 C:\xampp\htdocs\login\login.php 中 bool 类型值的数组偏移量
我有一个连接到我的 sql 数据库的注册和登录页面。寄存器采用它应该的值,但 login.PHP 给出了这个错误:
Warning: Trying to access array offset on value of type bool in C:\xampp\htdocs\login\login.PHP on line 22
这是我的代码:
<?PHP
require_once "config.PHP";
require_once "session.PHP";
$error='';
if($_SERVER["REQUEST_METHOD"]=="POST"&&isset($_POST['submit'])){
$email=trim($_POST['email']);
$password=trim($_POST['password']);
if(empty($email)){
$error .='<p class="error">please enter email</p>';
}
if(empty($password)){
$error .='<p class="error">please enter password</p>';
}
if(empty($error)){
if($query=$db->prepare("SELECT * FROM users WHERE email=?")){
$query->bind_param('s',$email);
$query->execute();
$row=$query->fetch();
if($row){
if(password_verify($password,$row['password']==false||is_null($row['password']))){
$_SESSION["userid"]=$row['id'];
$_SESSION["user"]=$row;
header("location: welcome.PHP");
exit;
}else{
$error.='<p class="error">password is wrong</p>';
}
}else{
$error.='<p class="error">email is wrong</p>';
}
}
$query->close();
}
MysqLi_close($db);
}
?>
我尝试过 is_null 但似乎没有用
解决方法
基于 PHP 手册 https://www.php.net/manual/en/function.password-verify.php
password_verify ( string $password,string $hash ) : bool
password_verify 函数的第二个参数是一个哈希字符串,在你的代码中你使用布尔值作为参数
我的建议是:
if ($row) {
if (empty($row['password']) || is_null($row['password'])) {
$error .= '<p class="error">password is null</p>';
} else if (password_verify($password,$row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
header("location: welcome.php");
exit;
} else {
$error .= '<p class="error">password is wrong</p>';
}
} else {
$error .= '<p class="error">email is wrong</p>';
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。