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