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

时间:2019-06-09 12:32:01

标签: javascript php html

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

试图禁用“后退”按钮,但效果不佳,用户可能会认为网页已损坏

samp.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>

samp2.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>

如果我注销,是否可以在按下“后退”按钮时直接将我引导到登录页面,而不是将我引导到上一页?

注销后按下后退按钮时出错:

  

注意:未定义的索引:第4行C:\ xampp \ htdocs \ name \ samp2.php中的session_var_user       嗨,

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-1)

感谢您回答先生。 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文件,这是我的实际作业。我总是先制作实验文件,因为我不想弄乱原始文件。

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