微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

警告:尝试访问第 22 行 C:\xampp\htdocs\login\login.php 中 bool 类型值的数组偏移量

如何解决警告:尝试访问第 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

<?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 举报,一经查实,本站将立刻删除。