防止用户在注销后返回上一页,而不禁用浏览器上的后退按钮 php.



我正在为我的家庭作业创建一个简单的登录和注销,我正在使用 $_SESSION 来显示当前登录用户的数据库中的用户名。登录和注销正在工作,但是当按下浏览器的后退按钮时,它将返回到我注销的上一页。因为它在我注销时已经session_destroy,所以在按下后退按钮时它会输出错误。

尝试禁用后退按钮,但看起来不太好,用户可能认为网页已损坏

桑普.php

<?php
session_start();
if(isset($_POST['botLogin']))
  {
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'db_name';
    $conn = new mysqli($host, $user, $pass, $db);
    $username = $_POST['username'];
    $password = $_POST['password'];
    $result = $conn->query("SELECT * FROM tbl_name WHERE col_userName = '$username' AND col_custPass = '$password' ");
      if(mysqli_num_rows($result)==1)
      {
        $_SESSION['session_var_user'] = $username;
        header('Location:samp2.php');
      }
      else
      {
        echo "Username or password mismatch";
      }
  }
?>
<form action = "samp.php" method="post">
      <input type = "text" name = "username" placeholder="username">     
      <input type = "text" name = "password" placeholder="password">     
      <input type = "submit" name = "botLogin" value = "login">    
</form>

桑普2.php

<?php
session_start();
echo "Hi," . $_SESSION['session_var_user'];
if(isset($_POST['logout']))
  {
    session_destroy();
    echo "<script>location.href='samp.php';</script>";         
  }
?>
<form action = "samp2.php" method="post">
  <input type="submit" name="logout" value="logout">
</form>

如果我注销,是否可以在按下后退按钮时将我定向到再次登录页面,而不是将我定向到上一页?

注销后按下

后退按钮按钮时出错:

注意:未定义的索引:session_var_user C:\xampp\htdocsame\samp2.php第 4 行 你好

解决方案很简单,在 samp2 中.php将 'session_start((' 替换为以下代码

if (session_status() == PHP_SESSION_NONE) {
session_start(); }
if (isset($_SESSION['session_var_user'])) { }
else {
header("Location: /samp.php/"); }

此代码将检查会话是否存在,如果不存在,它将用户重定向到登录页面

感谢您回答 cg 先生。我刚刚创建了一个没有导航栏的不同登录页面,即使我按下了后退按钮,它也不会显示错误未定义的索引,它只会返回到登录页面。

登录过程

if($row['col_userName'] == $username AND $row['col_custPass'] = $password){
     $_SESSION['session_var_user'] = $username; // I created the session variable 
    echo "
            <script> 
              window.location.href = 'index.php';
            </script>
        ";
    }else{echo "failed";}

导航栏中的代码

   <li class="nav-item">
        <a class = "justtextstyle" href="#">
            <?php 
               if(!isset($_SESSION['session_variable']))
               {
                   echo "<a class = 'justtextstyle' href='login.php'>Log In Here</a>";
               }
               else
               {
                   echo "Hi," . $_SESSION['session_variable'];
               }
           ?>
        </a>
    </li>  

我问题中的代码不同但想法相同,因为那是实验性的 PHP 文件,这是我的实际作业。我总是先制作实验文件,因为我不想弄乱原始文件,哈哈。

或者尝试将其放在导航栏中,指示如果未设置会话,它将重定向到索引,因为会话只会在成功登录后设置,如果您注销,即使您按后退按钮,会话也不会设置,它不会返回您的上一页,因为会话仍未设置。

相关内容

  • 没有找到相关文章

最新更新