我有一个三个PHP脚本(logout.php,index.php,session.php),我在一个更大的应用程序中使用它。我合并了session.php(用作控制保留页面视图的机制,用于按下浏览器上的按钮)。
我正在尝试将logout.php清除缓存和登录的用户信息放在网页上,但无论我做什么,我似乎都无法注销。也就是说,用户仍然在登录时保留在我的页面上。
如何注销以确保用户未在我的index.php页面上显示为登录?
session.php文件
<?
session_cache_limiter('public');
session_start();
?>
logout.php
<?php
session_start();
$_SESSION['expire'] = "<META HTTP-EQUIV=\"EXPIRES\" CONTENT=\"Mon, 02 May 2015 21:00:00 GMT\">";
header('Location: index.php');
?>
index.php脚本的开头
<?php
session_start();
if (isset($_SESSION['expire']))
{
echo $_SESSION['expire'];
session_unset();
session_destroy();
unset($_SESSION);
}
?>
每次尝试注销时,错误日志都会显示以下内容。
PHP注意:会话已经启动 - 忽略第6行的index.php中的session_start()&lt; - 这是指我的本地代码中的if块中有session_start()的位置。
编辑 - 修改了index.php
<?php
if (isset($_SESSION['expire']))
{
session_start();
echo $_SESSION['expire'];
session_destroy();
}
else
{
require_once('session.php');
}
?>
最新的index.php脚本
<?php
if (session_status() === PHP_SESSION_NONE)
{
require_once('session.php');
}
else
{
session_start();
if (isset($_SESSION['expire']))
{
$expire = $_SESSION['expire'];
session_destroy();
echo $expire;
}
}
?>
答案 0 :(得分:0)
我为我的脚本制定了以下代码,解决了我遇到的注销问题。我将我的问题的原因缩小到我的浏览器中可能错误解释/解析的html代码,我在页面源代码中注意到它是红色标记。
在<html>
标记之前的php脚本中添加doctype和元标记之后,我的页面成功注销了!
<强>的index.php 强>
<!DOCTYPE html>
<?php
session_start();
if (session_status() === PHP_SESSION_NONE)
{
require_once('session.php');
}
else if (isset($_SESSION['expire']))
{
$expire = $_SESSION['expire'];
session_destroy();
echo $expire;
echo "<meta http-equiv='refresh' content='0; url=index.php'>";
}
?>
<html>
... rest of code not shown
<强> session.php文件强>
<?php
session_start();
session_cache_limiter('public');
?>
<强> logout.php 强>
<?php
session_start();
$_SESSION['expire'] = "<META HTTP-EQUIV=\"EXPIRES\" CONTENT=\"Mon, 02 May 2015 21:00:00 GMT\">";
header('Location: index.php');
?>