这种身份验证(登录)有什么解决方案吗?

时间:2021-06-12 19:11:21

标签: php sql

仅当我输入数据库中不存在的错误电子邮件时,才会出现此错误:

<块引用>

注意:尝试获取非对象的属性“email” C:\path\UsersCONtroller.php 第 10 行

但是只要密码错误并且电子邮件存在于数据库中,它就可以工作!
控制器:

<?php 
class UsersController{
    public function auth(){
        if(isset($_POST["submit"])){
         
          
            $data["email"] = $_POST["email"];
            $result = User::login($data);
            
            if($_POST["email"]===$result->email  && password_verify($_POST["password"],$result->password)){
                $_SESSION["logged"] = true;
                $_SESSION["email"] = $result->email;
                $_SESSION["fullname"] = $result->fullname;
                $_SESSION["admin"] = $result->admin;
                Redirect::to("home");
            }
            else{
                
                Session::set("error","Wrong email or password");
                Redirect::to("sign");
            }
        }

            
        }
       
    }

?>

型号:

<?php 
class User{
    static public function login($data){
        $email = $data["email"];
        try {
        $query = "SELECT * FROM users WHERE email = :email";
        $stmt = DB::connect()->prepare($query);
        $stmt->execute(array(":email"=>$email));
        $user = $stmt->fetch(PDO::FETCH_OBJ);
        return $user;
    } catch (PDOException $ex) {
        echo "error : ".$ex.getMessage();
    }
    }
 
}

?>

谢谢!

1 个答案:

答案 0 :(得分:0)

试试

if($result && $_POST["e...

结果为空时排除