【问题标题】:Refresh button VS Back button Vs Re enter the url刷新按钮 VS 后退按钮 Vs 重新输入 url
【发布时间】:2013-09-10 13:42:05
【问题描述】:

我的 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)。为什么会这样,我需要重新输入 url (NOT REFRESh) 这样我才能成功注销我的项目。

【问题讨论】:

标签: php


【解决方案1】:

试试这个:

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');

【讨论】:

  • 这是一个很好的但是,我的 login.php 中有一些技巧,这就是为什么我不能使用这个,我会更好地重新编码我的 login.thanks man
猜你喜欢
  • 2019-03-04
  • 2012-02-22
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2019-03-29
相关资源
最近更新 更多