如果用户帐户已从数据库中删除但用户已登录,则销毁会话

我在 PHP 中创建了用户系统。现在我想要这个,如果我从数据库中删除用户帐户,那么会话应该被销毁并且用户应该被注销并向他显示一条消息。


我已经搜索了很多,我从中得到了一个(堆栈溢出),但这不是我问题的答案。这是链接:删除用户但仍登录后销毁会话。我已经检查了这些答案,但这些不是我的问题的答案。


我知道函数,session_destroy()但我怎样才能让它按我想要的方式工作。如何实施才能完成这项工作。


下面是用户登录功能代码:


public function userLogin($data){

        $phone_number = mysqli_real_escape_string($this->db->link, $data['phone_number']);

        $password = mysqli_real_escape_string($this->db->link, $data['password']);


        if($phone_number == "" || $password == ""){

            $loginmsg = "<div class='alert alert-danger'>Phone number or Password must not be empty!<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>&times;</span></button></div>";

            return $loginmsg;

        } else {

            $this->setSessionDuringLogin($phone_number, $password);

        }

    }


public function setSessionDuringLogin($phone_number, $password){

        $query = "SELECT * FROM users WHERE phone_number = '$phone_number' AND password = '$password'";

        $result = $this->db->select($query);

        if($result != false){

            $value = $result->fetch_assoc();

            Session::set("userlogin", true);

            Session::set("user_id", $value['user_id']);

            Session::set("first_name", $value['first_name']);

            Session::set("last_name", $value['last_name']);

            Session::set("email", $value['email']);

            Session::set("password", $value['password']);

            header("Location: profile.php");

        } else {

            $loginmsg = "<div class='alert alert-danger'>Email or Password is wrong.<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>&times;</span></button></div>";

            return $loginmsg;

        }

    }


呼如林
浏览 212回答 2
2回答

呼唤远方

你需要:destroy_session();或者您需要删除会话变量:unset($_SESSION);您可以重定向到索引页面:header('Location: index.php);exit();如果会话在数据库上工作,则销毁会话对象。$pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root');$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);$stmt = $pdo->prepare('SELECT COUNT(*) as cnt FROM users WHERE user_id = :s1');$stmt->execute( array( ':s1' => $userid ) );$cnt = $stmt->fetchAll()[0]['cnt'];if($cnt == 0){&nbsp; &nbsp; session_destroy();&nbsp; &nbsp; // destroy session here}

尚方宝剑之说

//call this function at top of every page after loginfunction checkexistuser(){$user_id = $_SESSION['user_id'];$query = "SELECT * FROM users WHERE user_id = '".$user_id."' ";&nbsp; &nbsp; &nbsp; &nbsp; $result = $this->db->select($query);&nbsp; &nbsp; &nbsp; &nbsp; if($result->num_rows() == 0){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //destroy_session , redirect, show message whatever you want.&nbsp; &nbsp; &nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP