Php 注销脚本不存在';设置重定向时无法工作
我有以下注销脚本:Php 注销脚本不存在';设置重定向时无法工作,php,.htaccess,redirect,apache2,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 Re
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文件,它工作得很好。我认为问题在于htaccess文件中的连字符。试试这个:
RewriteRule ^log\-out /logout.php
你能告诉我发生的错误/行为吗
编辑:问题出在你的PHP中。首先,我建议将登录相关数据存储在会话中,而不是cookie中。用户可以添加和编辑cookie 无论如何,代码应该成功地清除(如果不删除)cookies。因此,您可能是根据cookie是否存在而不是其内容来检查您是否登录。在本例中,请尝试
if(empty($\u COOKIE['key'])
,它将检查它是否为空
要完全删除cookie:unset($\u cookie['key'])
顺便说一句,session\u destroy()
与cookie完全无关
编辑2:尝试将cookie分配给您的域及其所有子域(包括www):
添加cookies时也要这样做。在htaccess文件中尝试此操作
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^log\-out logout.php
将RewriteBase设置为您的基本url:希望您知道这一点。这并没有解决问题。。没有错误或任何东西,它确实会将我重定向到主页,但不会删除cookies。重定向后,我仍然登录。我将setcookie更改为unset(),但得到了相同的结果。另外,当直接链接到.php文件时,怎么可能工作,而当我使用重定向时却不工作呢?您100%确定要浏览php文件吗?删除重定向并打印一些内容,然后尝试查看它是否仍然重定向。@Martti我将重定向更改为位置:我可以看到重定向工作正常,如果这是您的意思,缓存设置是什么,服务器上是否安装了memcached?
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^log\-out logout.php