首页 > 解决方案 > 注销后,我也可以通过单击浏览器的后退按钮打开页面

问题描述

正如我上面问的,即使在注销后如何不打开页面?我检查了很多问题和解决方案,但没有一个对我有用,恐怕我可能做错了什么不知道。但这个问题是因为我在以前的解决方案中读到的浏览器缓存。请帮助我解决任何问题。

我将在下面发布我的代码:

会话.php

<?php
    session_start();
    if(!isset($_SESSION['id']))
    {
        header("Location: index.php");
    }
    $userid = $_SESSION['id'];  
    include_once 'includes/connection.php';
    $stmt = $conn->prepare("SELECT * FROM admin");  
    $stmt->execute();   
    $dets = $stmt->fetch();
?>

登录.php

session_start();
require_once 'includes/connection.php';

if(isset($_POST['uname']))
{
     $user_name = $_POST['uname'];
     $password = md5(trim($_REQUEST['password']));
     try
     {
         $stmt = $conn->prepare("SELECT * FROM admin WHERE BINARY username=:username");
         $stmt->bindParam(':username', $user_name, PDO::PARAM_STR);
         $stmt->execute();
         $row = $stmt->fetch();
         $count = $stmt->rowCount();
         if($count > 0)
         {
           if($row['password']==$password)
           {
               $_SESSION['id'] = $row['id'];
               $_SESSION['username'] = $row['username'];
               $_SESSION['email'] = $row['email'];
               echo "1"; // log in
           }
           else
           {                
              echo "Username or Password does not exist."; // wrong details
           }
         }
       }        
       catch(PDOException $e)
       {
         die("ERROR: Could not prepare/execute query: " . $e->getMessage());
       }
    }

?>

注销.php

<?php
    session_start();
    session_destroy();
    header("Location: index.php");
?>

标签: php

解决方案


使用 session_destroy() 后,会话在幕后被销毁。由于某种原因,这不会影响 $_SESSION 中的值,该值已为此请求填充,但在以后的请求中它将为空。

如果您愿意,您可以手动清除 $_SESSION ($_SESSION = [];)。


推荐阅读