为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2021-06-22 17:05:03
我正在为我的作业创建一个简单的登录和注销,我使用 $_SESSION 来显示当前登录用户的数据库中的用户名。登录和注销工作正常,但是当浏览器的后退按钮被按下时,它会回到我之前注销的页面。因为当我注销时它已经是 session_destroy 它会在按下后退按钮时输出错误。尝试禁用后退按钮但看起来不太好,用户可能认为网页坏了samp.php<?phpsession_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<?phpsession_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 in C:\xampp\htdocs\name\samp2.php 第 4 行 您好,
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

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


if (session_status() == PHP_SESSION_NONE) {

session_start(); }

if (isset($_SESSION['session_var_user'])) { }

else {

header("Location: /samp.php/"); }

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


查看完整回答
反对 回复 2021-06-24
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

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


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


查看完整回答
反对 回复 2021-06-24
  • 2 回答
  • 0 关注
  • 284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信