php cache vs cookie

时间:2013-03-27 09:42:28

标签: php session redirect cookies logout

我正在整合登录页面(固定用户名和密码)。

用户登录后,他将被重定向到另一个页面'x'(在我的服务器上)。

但是,当用户关闭浏览器(或标签页)并重新打开它时,他会自动被定向到页面'x',而无需询问用户名和通过。

但是,如果我从我的浏览器(firefox)设置中删除cookie,事情就会恢复正常。删除缓存不起作用。

我知道我需要插入几行代码来删除cookie。 我的问题是,

  1. 这是100%的cookie问题吗?或者我也需要阻止存储到本地缓存中?
  2. 在登录或重定向期间,cookie防止发生在哪个级别?
  3. 一旦我被重定向到页面'x',那么在那里放一个注销按钮是否可以退出重定向的会话?
  4. 下面是我的代码。

    <?php
    session_start();
    if(isset($_POST['username'])){
     if(($_POST['username'] == "user") && ($_POST['password'] == "pass"))
    {
      $_SESSION['secured'] = "Secured";
     }else{
      echo "Wrong username and password.  <p>
      <a href='?'retry</a>";
     }
    }
    
    if(!isset($_SESSION['secured']))
    {    
    echo "<form method='post'>
    Username: <input type='text' name='username' maxlength='10' /><br>
    Password: <input type='password' name='password' maxlength='10' /><br>
    <input type='submit' value='login' />
    </form>";
    }else{
    ?>
    
    <html>
    <head>
    <title>Session Login</title>
    </head>
    <body>
    <p>redirecting....
    <meta HTTP-EQUIV="REFRESH" content="1; url=http://x.php">
    </p>
    </body>
    </html>
    
    <?php
    }
    ?>
    

1 个答案:

答案 0 :(得分:1)

如果您可以创建一个会破坏会话的logout.php页面:

unset($_SESSION['secured']);
header('Location: login.php');
exit;

只需访问该页面即可销毁登录信息。

如果您希望会话在预定时间段后超时,则可以使用类似于in this example所示代码的内容。

如果你想在用户登陆x.php后杀死会话

<?php
session_start();

//First make sure that they're allowed access to x.php
if(!isset($_SESSION['secured'])){
    //They shouldn't be here.
    header('Location: login.php'); //Redirect back to your login page
    exit;
}

//Ok, user is obviously logged in. Unset the session variable so that they can only view this page once (unless they login again)
unset($_SESSION['secured']);

//Show content of x.php