PHP注销系统无法正常工作。 (MAMP上的session_destroy)

时间:2013-01-02 11:44:36

标签: php session mamp logout

我最近将我的网站从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上发布了一个问题,如果你提示改进我的提问,请告诉我)

6 个答案:

答案 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向我们提供一些我们可以在自己的服务器上安装和测试的内容。谢谢,〜雷