2009-03-09 6 views
5

मैं अपने डोमेन पर सभी उपयोगकर्ता कुकीज़ को हटाने के लिए PHP कोड लिखने की कोशिश कर रहा हूं। कुकीज़ है कि जावास्क्रिप्ट में स्थापित किए गए थेसर्वर पर जावास्क्रिप्ट में सेट की गई कुकीज़ को हटा नहीं सकता

<?php 
$domain = 'www.example.com'; 
$deleteExpiration = time() - 60*60*24*365*10; // 10 years ago 
foreach (array_keys($_COOKIE) as $cookie) { 
    setcookie($cookie, 0, $deleteExpiration, '/', $domain); 
} 

http://www.example.com/delete_cookies.php पर इस कोड चल रहा है सभी कुकीज़ कि सर्वर पर स्थापित किए गए हटाता है, लेकिन नहीं:

यहाँ मैं क्या मिला है।

मैंने फ़ायरफ़ॉक्स कुकीज़ संवाद का उपयोग करके सत्यापित किया है कि समस्याग्रस्त कुकीज़ वास्तव में (पथ = /; डोमेन = www.example.com) से हैं। लाइव HTTP हेडर का उपयोग करना, मैं देख सकता हूँ कि निम्नलिखित हैडर भेज दिया जाता है:

Set-Cookie: CookieName=0; expires=Fri, 12-Mar-1999 19:36:15 GMT; path=/; domain=www.example.com 

तो मेरा मानना ​​है कि setcookie आदेश अपेक्षित ढंग से काम कर रहा है। फ़ायरफ़ॉक्स सिर्फ अनुरोध का सम्मान नहीं कर रहा है।

एक अतिरिक्त चीज़ जो मैंने देखा है वह है कि यदि मैं सर्वर पर domain=www.example.com के साथ कुकी सेट करता हूं, तो यह domain=".www.example.com" के साथ फ़ायरफ़ॉक्स कुकी संवाद में सूचीबद्ध है, लेकिन यदि मैं जावास्क्रिप्ट कोड का उपयोग कर निम्न कुकी सेट करता हूं तो अग्रणी बिंदु है नहीं जोड़ा गया।

मैं क्या गलत कर रहा हूं? मैं इन कुकीज़ को कैसे हटा सकता हूं?

+0

http://stackoverflow.com/a/25967822/1642018 – AMB

+0

आप मिल सकती है [ '$ cookie-> हटाने()'] (https://github.com/delight-im/PHP-Cookie/blob/ 004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L173) सहायक, जैसा कि [इस स्टैंडअलोन लाइब्रेरी] में पाया गया है (https://github.com/delight-im/PHP- कुकी)। – caw

उत्तर

5

मेरे पास एक समान समस्या है और इसे डोमेन से गुज़रने से हल किया गया था।

setcookie($cookie, '', 1, '/');

से cookie_spec "एक तरफ ध्यान दें, एक उच्च स्तरीय मूल्य के लिए पथ की स्थापना अन्य अधिक विशिष्ट पथ मैपिंग पर हावी नहीं होता पर। अगर वहाँ एक दिया कुकी नाम के लिए एकाधिक मिलान है, लेकिन अलग रास्तों के साथ कर रहे हैं , सभी मिलान करने वाली कुकीज़ भेजी जाएंगी। "तो यदि आपके पास अलग-अलग पथ स्थानों पर समान नाम कुकीज़ हैं तो आपको प्रत्येक को हटाना होगा।

संबंधित मुद्दे