2013-01-02 79 views
2

我最近将我的网站从XAMPP转移到了MAMP。问题是我的注销系统不再有效。注销控件:PHP注销系统无法正常工作。 (MAMP上的session_destroy)

<a href="logout.php">Log Out</a> 

我的注销页面本身:

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

奇怪的是,当我改变的东西logout.php,比如使其成为一个简单的回声声明:

<?php 
echo 'test'; 

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

我仍然没有在浏览器中看到'test';即使我已经在页面中注释掉了标题,我仍留在index.php中。我是100%的链接路径很好。

是否改变logout.php文件或不改变,我可以看到服务器没有删除tmp/php中的会话文件。这很奇怪,因为我已经允许在MAC OS X中每个人都可以读写这个tmp/php文件夹。

操作系统:Mac OS X
服务器:Apache中甲基苯丙胺
PHP:5.4.4
浏览器:在发生问题谷歌浏览器Safari浏览器&

(这是我的处女航上发布提问计算器,如果你的技巧,以提高我的问话,请让我知道)

+0

如果你“留在** index.php **”,你肯定不会在你的浏览器中看到“测试”,因为你说你将** logout.php **更改为'echo'测试'; '声明。您应该访问logout.php。 – howanghk

+0

当您在url中输入manualy path_to_logout.php时,您会看到什么错误? – sandip

+0

难道是你正在发生错误,但将error_reporting设置为0? –

回答

1

尝试使用这个:

<? 
    session_start(); 

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

我刚刚清除了$ _SESSION,并且它始终对我有用

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,〜雷

+0

谢谢,我试过了。但是,它没有工作。 – Tom

0

尝试使用输出缓冲器。

​​
+0

谢谢你,我试过了。但是,它没有工作。 – Tom

1

如果调用logout.php当containts下面的代码不会打印test那么还有别的东西错了,它无关的会议。

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

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

您可以找到有关htaccess on MAMP这里

+0

谢谢你的回答。不幸的是,我无法修复它。我只有一个.htcacces文件,而不是在我的网站的根文件夹: 选项-Indexes 我刚刚测试了以下:我改变了链接在我的菜单logout1.php,也取得了logout1.php文件; logout.php和logout1.php都位于站点根文件夹中。 在logout1.php中我做了一个简单的echo语句: <?php echo'test'; ?> 此文件尚未达到。菜单中的所有其他链接都可以正常工作。在XAMPP下也没有问题。你有解决这个问题的建议吗? – Tom

+0

你说它没有达到。你看到了什么? 404未找到错误或其他页面? –

+0

由于某种原因,现在只显示logout1.php。所以我看到'测试'被回应。如果你看看我上面的评论,现在发生了两个问题: 1.当我通过链接去登录logout.php时,会话信息文件没有被销毁(我在finder中看到这个文件)。 2.如果我手动输入地址,会话信息文件会在几秒钟后被删除。 3.如果我回到index.php,它首先看起来好像我已经登录。然后我刷新,并且index.php看起来好像我已经注销。 你知道一个解决方案吗? (感谢您的帮助到目前为止!) – Tom

-1

@ tom.e.degroot信息:我最后一次检查,“它没有工作”是不是一个错误消息。你需要再多描述一下症状。请按照这里的指导:http://SSCCE.org并给我们一些东西,我们可以在我们自己的服务器上安装和测试。谢谢,〜Ray

+0

亲爱的雷, 谢谢你的建设性意见。我是新来的,我很高兴你给了我这个有用的提示。当我尝试了你的建议时,我的浏览器出现了404错误(因此,CodeIgniter并没有生成404消息,这是更好的描述吗? – Tom

0

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

希望这可以帮助别人。