簡體   English   中英

PHP無法刪除JavaScript設置的cookie

[英]PHP can't remove cookie that was set by JavaScript

是否可以刪除通過JS使用PHP設置的cookie?

我這樣做:

* FRONT(JS):

if ($.cookie('myCookie'))
{
   console.log('Cookie.. :(  ');
}
else
{
    console.log('Yaay! No cookie!');
    $.cookie('myCookie', '123');
}

BACK(PHP):

if (isset($_REQUEST['removeCookie']))
{
   setcookie("myCookie", "", time()-3600);
   unset($_COOKIE['myCookie']);
}

結果:

在此輸入圖像描述

似乎這是一個謎

您無法強制瀏覽器刪除cookie文件。 但是,您可以刪除cookie的內容並使其過期。 這正是您在上面的代碼中所做的。 我可能會稍微調整一下:

setcookie('myCookie', '', 1, '/'); // no need to calculate one hour ago.

如果客戶端時間錯誤,使用time()函數設置cookie過期可能無法按預期工作。

要取消cookie嘗試,

setcookie('myCookie', 'blah blah', 1);

資料來源: php setcookie docs中的評論

這將取決於用戶PC在超時后刪除cookie。 我個人不相信。 我將cookie設置為空值,或將其設置為DELETED然后在測試代碼中檢查是否已設置,然后檢查該值是否為空或不是DELETED

要通過PHP從瀏覽器中完全刪除cookie,請嘗試此代碼

$name = 'exists_cookie';
unset($_COOKIE[$name]);
  // Set empty value
$blank = setcookie($name, '', time() - 3600);

有人可以在測試機器上運行此代碼我有點困惑為什么cookie可以“取消設置”但不能在PHP中進行值更改或過期等似乎setcookie()根本不起作用。

<script type="text/javascript" src="jquery.js"></script>
<script src="jquery.cookie.js"></script>
<script>
   $.cookie('myCookie', '123' ,'/');
   console.log("Created myCookie");
</script>
<?php
   echo $_COOKIE['myCookie'];
   //Comment/uncomment below as required
   //setcookie("myCookie", "BLAH", time()-430000);
   //$_COOKIE['myCookie'] = "BLAH";
   setcookie('myCookie', '', 1, '/');
   echo "<br />unset myCookie";
   echo "<br />".$_COOKIE['myCookie'];
?>
<script>
console.log($.cookie('myCookie').length);
if ($.cookie('myCookie').length>0)
{
   console.log('Cookie exists  ');
   console.log($.cookie('myCookie'));
}
else
{
    console.log('Yaay! No cookie!');
}
</script>

你似乎能夠創建一個php <> JS cookie不匹配,即:2個cookie完全相同,但存儲不同的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM