2012-01-06 42 views
1

要检查什么饼干存在我使用这个文件(test.php的):饼干不会被删除正确

foreach ($_COOKIE as $key => $value) { 
    print $key . "=" . $value . "</br>"; 
} 

我得到以下输出:

fbsr_{app id}={a bunch of chars} 

(凡内的东西{ }是私有数据)

要删除我的所有会话我用这个:

session_start(); 
session_unset(); 
session_destroy(); 

这删除了我的饼干:

setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600); 
setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600); 
unset($_COOKIE['fbsr_' . $app_id]); 
unset($_COOKIE['PHPSESSID']); 

问题是当我运行的代码检查,如果我的饼干都死了,他们都没有,我也得到相同的输出:/

为什么我的饼干没有删除?我的代码在某个地方不好吗?尝试了几种浏览器...

编辑: 好像饼干也被打烂毕竟,但是测试功能仍然打印饼干输出?!?!我很困惑?!

(注销文件)

if($action == 'logout'){ 

     $app_id = $facebook->getAppID(); 

     if (isset($_COOKIE['fbsr_' . $app_id])) { 
      echo 'goes here<br>'; 
      setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/"); 
      setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/"); 
      unset($_COOKIE['fbsr_' . $app_id]); 
      unset($_COOKIE['PHPSESSID']); 
     } 

     if (isset($_COOKIE['fbsr_' . $app_id])) { 
      echo 'is still sett<br>'; 
     } 

     session_start(); 
     session_unset(); 
     session_destroy(); 

     $result = array("success" => "true"); 
    } 

它永远不会打印is still sett这意味着cookie将被删除!

谢谢:)

+0

是会话摧毁你打电话之前取消设置($ _ COOKIE [ 'PHPSESSID'])?此时,如果会话ID为空,那么cookie不能检索该ID,并且该cookie不会被取消设置,因为它没有被引用。如果是这种情况,我会在确认会话在cookie被取消设置之前被销毁之后将其放入答案表格中。 – 2012-01-06 22:17:30

+0

解决了PHPSESSID cookie的问题,另一个仍然存在:/ – Richard 2012-01-06 22:33:47

+0

您是否已将session_destroy()移动到“setcookie”语句下方? – 2012-01-06 22:36:18

回答

1

这是一个方法我都用过删除的cookie

if (isset($_COOKIE['cookieName'])) { 
    setcookie('cookieName', '', time()-1); 
}