这令人沮丧,我已经使用PHP Sessions很长一段时间了,直到现在还没有遇到这个问题。我正在使用PHP处理基本的登录/注销脚本。
这是我的退出脚本所拥有的内容。
logout.php
<?php
session_start();
unset($_SESSION['email']);
session_destroy();
header("Location:login.php");
?>
因此我的 login.php 脚本具有以下代码:
的login.php
// I send the user to logged_in.php if the session already exists.
if(isset($_SESSION['email'])) header("Location:logged_in.php");
if(pass and username are correct){
$_SESSION['email'] = $email;
session_write_close();
header('Refresh: 1; logged_in.php');
}
现在,当我登录并且我被重定向到 logged_in.php 页面时,请在我转到 logout.php 页面时,而不是重定向到 login.php 它会返回 logged_in.php 。
这意味着当它到达 login.php 时,会话仍然存在,并在 login.php
中输入以下if语句if(isset($_SESSION['email'])) header("Location:logged_in.php);
答案 0 :(得分:1)
尝试类似的东西:
session_start();
// I send the user to logged_in.php if the session already exists.
if(isset($_SESSION['email'])) header("Location:logged_in.php");
if(pass and username are correct){
$_SESSION['email'] = $email;
session_write_close();
header('Refresh: 1; logged_in.php');
}
答案 1 :(得分:0)
session_regenerate_id(true)
为我工作。我之前遇到过同样的问题。某些浏览器似乎在活动时没有正确删除会话cookie。重新生成ID会为您提供一个全新的会话,但您仍然应该删除旧的会话。我不太确定这是修复还是解决方法,但它确实有效。如果将参数设置为true,session_regenerate_id
将创建一个新的会话变量并删除旧的变量。