2

我最近将我的网站从 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
PHP:5.4.4中的 Apache
浏览器:Google Chrome 和 Safari 都出现问题

(这是我在 stackoverflow 上发布问题的处女航,如果您提示改进我的提问,请告诉我)

4

6 回答 6

1

尝试改用这个:

<?
    session_start();

    $_SESSION = array();
    header("Location: index.php");
?>

我只是清除 $_SESSION,它总是对我有用

于 2013-01-02T11:52:10.497 回答
1

如果在包含以下代码时调用 logout.php 不打印test,那么还有其他错误,与会话无关。

<?php 
echo 'test';
//session_start()
//session_destroy()
//header('Location:login.php');
?>

你提到它仍然显示 index.php,这让我觉得你的.htaccess文件中有一个重写规则,它将调用从 logout.php 重定向到索引。检查您的 htaccess 文件是否有任何规则。

您可以在此处找到有关MAMP 上的 htaccess 的信息

于 2013-01-02T12:00:57.753 回答
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,~雷

于 2013-01-02T11:53:19.847 回答
0

尝试使用输出缓冲区。

<?php 
ob_start();
session_start();
session_destroy();
header('Location:login.php');
?>
于 2013-01-02T11:53:40.613 回答
0

在我的情况下,它与未正确定义的 php 代码块有关。我有<? ?>而不是<?php ?>

希望这可以帮助某人。

于 2015-09-09T19:45:37.617 回答
-2

@tom.e.degroot:上次我检查时,“它不起作用”不是错误消息。你需要多描述一些症状。请遵循此处的指导:http: //SSCCE.org并给我们一些可以在我们自己的服务器上安装和测试的东西。谢谢,~雷

于 2013-01-20T21:44:46.110 回答