Firefox 3: sunucuda JavaScript ayarlanmış tanımlama silinemiyor

1 Cevap php

Benim etki kullanıcı çerezlerin hepsini silmek için PHP kodu yazmaya çalışıyorum.

İşte ne var:

<?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 bu kod çalıştıran sunucu üzerinde ayarlanmış tüm çerezleri siler, ancak JavaScript kuruldu kurabiye.

Ben sorunlu kurabiye itibaren gerçekten olduğunu Firefox Çerezler iletişim kutusunu kullanarak doğrulandıktan (yolu = /; domain = www.example.com). Live HTTP başlıklarını kullanarak, aşağıdaki başlık gönderilir olduğunu görebilirsiniz:

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

Yani beklendiği gibi setcookie komutu çalışıyor inanıyorum. Firefox sadece isteği onurlandıran değildir.

Ben fark ek bir şey ben sunucu üzerinde etki = www.example.com ile bir cookie ise, o zaman ". Www.example.com" = etki ile Firefox çerez iletişim listelenmiş olmasıdır, ama ben ayarlarsanız JavaScript kodu kullanarak aşağıdaki çerez sonra gelen nokta eklenmez.

Ben yanlış ne yapıyorum? Nasıl bu çerezleri silebilir?

1 Cevap

Ben benzer bir sorunu yaşadım ve sadece etki geçirerek değil tarafından çözüldü.

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

Eğer farklı bir yol yerlerde aynı adı çerezleri varsa cookie_spec Bir yan not "Setting the path to a higher-level value does not override other more specific path mappings. If there are multiple matches for a given cookie name, but with separate paths, all the matching cookies will be sent." Yani her birini silmek zorunda olacak.