设置重定向时,注销脚本不起作用

时间:2012-02-03 10:47:34

标签: php .htaccess redirect apache2

我有以下注销脚本:

setcookie("key", "", time() - 36000);
setcookie("usr_email", "", time() - 36000);
session_destroy();
header("Location: http://www.site.net/");

当我直接关注该页面时(logout.php),它可以很好地将用户注销。

但出于某种原因,当我使用时:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^log-out /logout.php

我可以看到重定向有效,但是没有执行注销。

编辑:刚刚检查过,在重定向回主页后,cookie仍然可用。只是澄清一下,如果我直接进入注销php文件,它的效果很好。

2 个答案:

答案 0 :(得分:1)

我认为问题是你的htaccess文件中的连字符。试试这个:

RewriteRule ^log\-out /logout.php

你能说出发生的错误/行为吗?

修改
问题出在你的PHP上。首先,我建议在会话中存储与登录相关的数据,而不是cookie。 Cookie可以由用户添加和编辑。

无论如何,代码应该成功清除(如果不是删除)cookie。因此,您可能会根据Cookie是否存在而不是其内容来检查您是否已登录。在这种情况下,请尝试if(empty($_COOKIE['key'])),这将检查它是否为空。

完全删除Cookie:unset($_COOKIE['key'])

顺便说一下,session_destroy()根本与cookie无关。

编辑2:
尝试将cookie分配给您的域及其所有子域(包括www):

setcookie('key', '', time() - 36000, '/', '.mysite.net');

添加Cookie时也一样。

答案 1 :(得分:0)

在htaccess文件中尝试此操作

Options +FollowSymlinks
RewriteEngine on

RewriteBase /

RewriteRule ^log\-out logout.php

将RewriteBase设置为您的基本网址:希望您知道这一点。