我最近将我的网站从XAMPP转移到了MAMP。问题是我的注销系统不再有效。注销小部件:
<a href="logout.php">Log Out</a>
我的退出页面本身:
<?php
session_start()
session_destroy()
header('Location:login.php');
?>
奇怪的是,当我将某些内容更改为logout.php时,例如将其设为简单的echo语句:
<?php
echo 'test';
//session_start()
//session_destroy()
//header('Location:login.php');
?>
我仍然没有在浏览器中看到“测试”;我只是留在index.php,即使我已经在页面中注释了标题。我100%的链接路径都很好。
是否我改变了logout.php文件,我可以看到服务器没有删除tmp / php中的会话文件。这很奇怪,因为我允许MAC OS X中的每个人都可以读取和写入这个tmp / php文件夹。
操作系统:MAC OS X
服务器:MAMP内的Apache
PHP:5.4.4
浏览器:谷歌Chrome浏览器出现问题。 Safari浏览器
(这是我的首次航行,在stackoverflow上发布了一个问题,如果你提示改进我的提问,请告诉我)
答案 0 :(得分:1)
请尝试使用此代码:
<?
session_start();
$_SESSION = array();
header("Location: index.php");
?>
我只是清楚$ _SESSION,它总是对我有用
答案 1 :(得分:1)
如果在包含以下代码的情况下调用logout.php时不会打印test
,那么还有其他错误,它与会话无关。
<?php
echo 'test';
//session_start()
//session_destroy()
//header('Location:login.php');
?>
你提到它仍然显示index.php,这使我在你的.htaccess
文件中有一个重写规则,它将调用从logout.php重定向到索引。检查你的htaccess文件是否有任何规则。
您可以在此处找到有关htaccess on MAMP
的信息答案 2 :(得分:0)
这些是注销的基本部分,假设您的脚本使用的是PHP会话。请注意,您的注销脚本会导致解析错误,因为它在语句末尾缺少分号。也许只是一个错字。
<?php // RAY_EE_logout.php
session_start();
// CLEAR THE INFORMATION FROM THE $_SESSION ARRAY
$_SESSION = array();
// IF THE SESSION IS KEPT IN COOKIE, FORCE SESSION COOKIE TO EXPIRE
if (isset($_COOKIE[session_name()]))
{
$cookie_expires = time() - date('Z') - 3600;
setcookie(session_name(), '', $cookie_expires, '/');
}
// TELL PHP TO ELIMINATE THE SESSION
session_destroy();
// REDIRECT TO THE HOME PAGE
header("Location: /");
exit;
HTH,~Ray
答案 3 :(得分:0)
尝试使用输出缓冲区。
<?php
ob_start();
session_start();
session_destroy();
header('Location:login.php');
?>
答案 4 :(得分:0)
在我的情况下,它与PHP代码块没有正确定义有关。我有<? ?>
而不是<?php ?>
希望这有助于某人。
答案 5 :(得分:-1)
@ tom.e.degroot:我上次检查时,“它没有工作”不是错误信息。您需要更多地描述症状。请按照此处的指导:http://SSCCE.org向我们提供一些我们可以在自己的服务器上安装和测试的内容。谢谢,〜雷