我正在为我的作业创建一个简单的登录和注销,我正在使用$ _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 嗨,
答案 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文件,这是我的实际作业。我总是先制作实验文件,因为我不想弄乱原始文件。
或尝试将其放置在导航栏中,指示如果未设置会话,它将重定向到索引,因为只有在成功登录后才设置会话,并且如果您注销会话,即使按返回按钮也不会取消设置会话返回上一页,因为会话仍未设置。