Tarayıcı çerezi silmek?

6 Cevap php

Tamamen delete Kişinin çerez PHP ile ayarlamak için bir web tarayıcısı talimat herhangi bir yolu var mı?

I expiry bunu istediğiniz veya tarayıcı olması için beklemek yok closed.

Delete ile ben aslında artık çerez listesinde içeride yer yok demek.

6 Cevap

Tarayıcı ve kurabiye ile ilgili web sunucusu arasındaki sözleşme veri hak isteklerini de sunulacak olmasıdır - Eğer böyle bir dosya aslında var garanti edemez çünkü, herhangi bir çerez ile ilişkili dosyayı silmek için tarayıcıyı zorlayamaz.

Eğer "süresi dolacak kurabiye için beklemek istemiyorum" devlet, ancak çerez son veriler artık gerekli ve çoğu durumda olması anlamına geliyor, gelecek talepleri, sunulan gerektiğini göstermek için doğru bir yöntem olduğunu Dosyayı kaldırma tarayıcı.

Bir çerezi silmek için, bu nedenle, geçmişe sona erme zamanı ayarlayabilirsiniz. PHP, bu setcookie() ile yapılır.

Tüm çerezleri silmek için böyle bir şey deneyin:

foreach ($_COOKIE as $name => $value) {
    setcookie($name, '', 1);
}

Değer 1 expire değeri ve Unix zaman dönemin başlamasından sonra bir saniye temsil eder. Bu yüzden her zaman zaten dolmuş oluyor.

Evet. Kullan setcookie() ve geçmişte bir zaman silmek istediğiniz tanımlama bilgisi için sona erme tarihi ayarlayın. Kullanıcının tarayıcısı otomatik bir sonucu olarak kaldırmalısınız.

'Bir çerez silme göründüğünden daha zor olduğunu görünüyor.

setcookie($name, '', 1);

Hile yapmayacağım. '' boştur ve setcookie tüm talimatı göz ardı edebilirsiniz.

Ayrıca geçmişe zaman ayarı bazen çerez kimin sona süresi 1 daha yeni değerini korumak sağlar.

Ben şu anda bu uğraşıyorum. Bu nereden geldiğini bilmiyorum, ama orada.

Ben başvurdu ettik

setcookie($name, '0', 9000000000);

Bu tanımlama yanlış gideren bir değere ayarlanır sağlar ve herhangi bir önceki değerinden daha yeni olduğunu.

Herkes bu davranış içine herhangi bir fikir varsa lütfen söyle.

Ben zorluk için, etki alanı ve yol değerleri setcookie değerleri belirtilmemiş zaman yürütme yürütme için aynı olması garanti olduğu gerçeği yatıyor sanıyorum.

Ve ben böyle bir çerez 2038 kadar kadar sona olmayacaktır farkında değilim.

Çerez en yeni son kullanma tarihi biliniyorsa Alternatif, ondan sonra sadece 1 saniye ayarlanmalıdır.

Ben kombine yaklaşım kullanmak zorunda olduğunu düşünüyorum:

  • (Chacha102 önerdiği gibi) geçmişte dönerken süre sonu ayarlamak
  • JavaScriptto (andres Descalzo tarafından önerilen) document.cookie DOM nesneden girişleri silmek kullanın

Karışık bir yaklaşım ile gidiş için 2 iyi nedeni vardır:

  • JavaScript tarayıcınızda devre dışı bırakılabilir
  • tüm çerezleri Bazı modern tarayıcılarda çerezleri için sadece_http bayrağı destekleyen Document.cookie görülebilir. PHP, sadece_http kurabiye için destek görüyoruz http://www.php.net/setcookie

Benim için bu eklenti yazdı ve düzgün çalışır.

(function($) {
    $.cookieAllDelete = function(doc)
    {
    	var cookie_date = new Date();
    	var cookies = null;

    	cookies = doc.cookie.split(';');
    	cookie_date.setTime(cookie_date.getTime() - 1);

    	for(var i=0; i < cookies.length; i++) 
    	{
    		var cookie_name = cookies[i].split('=')[0];
    		try {
    			if (cookie_name.length > 0)
    				doc.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
    		} catch(ex) {}
    	}
    }
})(jQuery);

jQuery.cookieAllDelete(document);