我的main.php有问题,我使用这些代码获取会话变量
<?php
if ($_POST['login'])
{$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];}
?>
当我点击按钮注销
时<input type="submit" name="logout" value="Log out" formaction="logout.php"
formmethod="POST" />
我的logout.php包含这些代码
<?php
error_reporting(0);
unset($_SESSION['user']);
unset($_SESSION['pass']);
session_unset();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
$_POST = array();
echo " <script> window.location.href = '../login.php'; </script>";
exit();
?>
重定向到login.php后,当我按下浏览器的后退按钮时,$ _POST变量仍然被识别。这就是为什么我的会话变量再次与$ _POST变量相等。但是当我在main.php中当我点击浏览器的地址栏然后按ENTER键时,我的main.php将会重新启动。然后我会在退出后尝试注销。我将再次按下后退按钮,$ _POST变量不再存在(因为我不能再访问我的main.php)。为什么呢,我需要重新输入网址(不要刷新)这样我才能成功注销我的项目。
答案 0 :(得分:0)
试试这个:
login.php
if (isset($_POST['submit'])) {
// if validation is ok
//create session
}
main.php
if ( isset($_SESSION['user']) && isset($_SESSION['pass']) ) {
echo 'Welcome back';
} else {
header('Location:../'); // redirect them to login.php
}
logout.php
session_destroy();
header('Location: /login.php');