myNotlar Logo

Çerezler


Çerez, isteğe bağlı değerlerin, geçerlilik tarihleri, domain ve yol bilgileri ile birlikte isim-değer çifti şeklinde tutulduğu ufak veri alanlarıdır. İstemcinin bilgisayarında ufak dosyalar şeklinde muhafaza edilirler. JavaScript ile üzerinde işlem yapılabilmesine rağmen script tabanlı değildir. Çerez, HTTP sunucusunun hem istemci hem de sunucu tarafından erişilebilen bir özelliğidir/işlevidir.

Yapısı ve Kurallar

cerezIsmi=cerezDegeri [; expires = gecerlilikTarihi ] [; path = yolu ]
  • cerezIsmi : Çerezin ismi.
  • cerezDegeri : Çerezin değeri.
  • expires=gecerlilikTarihi : Opsiyonel. Aşağıdaki formatta çerezin geçerlilik tarihini belirler.
    Wdy, DD-Mon-YYYY HH:MM:SS GMT
  • path=yolu : Opsiyonel. Alan adı haricinde çerezin geçerli olduğu yolu tanımlar. Klasik olarak kök yolu ifade eden '/' değerindedir.
  1. Çerez isimlerinde ';', '=' ve diğer özel karakterler kullanılmamalıdır.
  2. Çerez değerlerinde string veya basit tiplerin kullanılması ve escape ile kodlanması olası hataları engelleyecektir.
  3. Geçerlilik tarihinin zaman dilimi GMT (UTC) formatında olmalıdır.
  4. Çerez yoluna özellikle dikkat edilmelidir. Çereze erişilmek istendiğinde, çerezin alan adı ve yol bilgisi sayfa isteği ile karşılaştırılarak çereze erişim sağlanır. Alan adının veya yolunun farklı olması durumunda çereze erişim sağlanmayacaktır. Örneğin, çerez '/javascript' gibi bir yol belirtilerek yazılmak istendiğinde yazılacaktır, fakat o yol haricinde erişim sağlanamayacaktır.
  5. Tarayıcıların çerezleri muhafaza şekilleri ve yerleri farklılık gösterdiği için çerezler sadece yazıldığı tarayıcı ile okunabilirler.

Çerez Yazmak

Çerezlere document.cookie özelliği ile erişim sağlanır. Çerezi oluşturmak için temel ihtiyaç sadece çerez ismi ve çerez değeridir. Geçerlilik tarihi ve yol bilgisi isteğe bağlıdır.

Çerezler yazılırken isim ve değer bilgileri arasına '=' eklenmelidir.

Aşağıdaki örnek kod, çerezin nasıl yazılacağını göstermektedir.

<script type="text/javascript">
	cerezAdi = "myCerez";
	cerezDeger = escape("Çerez içeriği");
	document.cookie = cerezAdi + "=" + cerezDeger

</script>

Bu örnek kod sonucunda çerez kodlanarak myCerez=%C7erez%20i%E7eri%u011Fi gibi bir şekilde saklanacak ve geçerlilik tarihi belirtilmediği için oturum sonlandığında veya tarayıcı kapandığında silinecektir.

Çerezin geçerlilik tarihinin belirtilmesi gerektiğinde çerez tanımlamasının sonuna ';' noktalı virgül ile birlikte expires eklenmeli ve değeri olarak GMT (UTC) formatında geçerlilik tarihi belirtilmelidir. Bunun için Date nesnesinin toGMTString metodu yeterlidir. Geçerlilik tarih-zamanı şu andan sonraki bir zamanı göstermelidir. Aksi takdirde çerez daha yazılmadan silinecektir.

Aşağıdaki örnek kod, çerezin geçerlilik süresinin 1 ay olarak belirlenerek yazılmasını göstermektedir.

<script type="text/javascript">

var cerezTarihi = new Date();
cerezTarihi.setMonth(cerezTarihi.getMonth() + 1 );
	
cerezAdi = "myCerez";
cerezDeger = escape("Çerez içeriği");
document.cookie = cerezAdi + "=" + cerezDeger + ";expires=" + cerezTarihi.toGMTString();

</script>

Aşağıdaki örnek kod, çerezin geçerlilik süresinin 1 ay olarak belirlenip yol bilgisinin de dahil edilerek yazılmasını göstermektedir.

<script type="text/javascript">

var cerezTarihi = new Date();
cerezTarihi.setMonth(cerezTarihi.getMonth() + 1 );
	
cerezAdi = "myCerez";
cerezDeger = escape("Çerez içeriği");
document.cookie = cerezAdi + "=" + cerezDeger + ";expires=" + cerezTarihi.toGMTString() + ";path=/";

</script>

Çerez Okumak

 document.cookie özelliği, çerez bilgisini aşağıdaki şekilde verir. Bu yüzden, çerez değerinin alınabilmesi için bu string'in ayıklanması gereklidir. Ayıklama işlemi ise hem String metodları ile hem de düzenli ifadeler ile yapılabilir. Burada kurallar belli olduğu için düzenli ifadeler pratik olacaktır. Kurallar aşağıdaki şekilde sıralanabilir.

myCerez=%C7erez%20i%E7eri%u011Fi;expires=Sat, 29 Dec 2007 19:18:43 GMT

Çerez değeri için düzenli ifade kuralları
  1. Çerez adı
  2. = işareti
  3. ; ve = işareti içermeyen, alınmak istenen kısım
  4. En son ; veya kelime sonu (\b)

Aşağıdaki örnek kod, çerez değerinin RegExp nesnesi ile düzenli ifadeler kullanılarak okunup, alert ile gösterilmesini göstermektedir.

<script type="text/javascript">

	var Cerez = document.cookie;
	
	var Duzenli = new RegExp("myCerez=([^;=]+)[;\\b]?");
	
	if(Duzenli.test(Cerez))
	{
		Sonuclar = Duzenli.exec(Cerez);
		alert( unescape(Sonuclar[1]) );		
	}
	else alert("Çerez bulunamadı");	

</script>

Düzenli ifadelerde parantez, temel olarak eşleşme olması durumunda ilgili bölümün, sonuç dizisinde saklanacağını ifade eder. Örnekte, test ile eşleşme olup-olmadığı, olması durumunda ise bir Array sonuç dizisi döndüren exec metodu kullanılmaktadır. Eşleşme sonuçlarının aktarıldığı Sonuclar dizisinin ilk elemanı olan '0' sıfırıncı eleman, eşleşmeye uyan kısmı içerir. (Örneğin, myCerez=%C7erez%20i%E7eri%u011Fi;). 1. eleman ise parantezle sınırlanmış çerez değerini içeren kısımdır. Kodlanmış değeri içeren bu kısım unescape ile deşifre edilerek alert ile gösterilir.

Çerez Silmek

Çerezi yazarken geçerlilik tarihi için şu andan sonraki bir tarihi göstermesi gerektiğini ve böyle olmaması durumunda daha yazılmadan silineceğini belirtmiştik. Anahtar olay da budur: Çerezin geçerlilik tarihi şu andan önceki bir tarihe ayarlanıp yazıldığında çerez silinecektir. Çerezi silmek amacıyla cerezAdi=; gibi null değer verilerek yazılması çerezi silmez, sadece değerini null yapar.

Çerez silerken geçerlilik tarihini çok önceki bir tarihe ayarlamak ve olası tarih hatalarına karşı, çerez değerini null yapmak daha garanti bir yol olacaktır.

Aşağıdaki örnek, çerez tarihinin 10 sene öncesine ayarlanıp değeri null yapılarak silinmesini göstermektedir.

<script type="text/javascript">

	var sure = new Date();
	
	sure.setFullYear(sure.getFullYear() - 10);
	
	document.cookie = "cerezim=;expires=" + sure.toGMTString();

</script>

Son Söz ve Çalışan Örnek

Çerez kullanımı size birçok konuda avantaj sağlayacağı gibi aynı zamanda ziyaretçiden de istatistiksel veya farklı bazı bilgiler almanızı sağlayabilir. Çerez ayarları tarayıcılarda standart ayarlardan ayrılıp Gizlilik olarak değerlendirilmektedir. Bir çok tarayıcıda bulunan bu ayarla kullanıcı, sitelerin çerezlerini tek tek veya hepsini engelleyebilir. Bu şekilde bir ayarlama JavaScript desteğini kapatmayacak fakat çerez işlemlerini engelleyecektir.

Tarayıcının çerezleri kabul edip etmediği window nesnesinin navigator.cookieEnabled özelliği ile öğrenilebilir. Bu değer, tarayıcı çerez işlemelerine izin veriyorsa true, diğer türlü false döner.

Aşağıdaki örnek, OrnekCerez isimli bir çerezin sizin belirlediğiniz bir değerle yazdırılmasını, okunmasını ve silinmesini göstermektedir.

<label>Çerez değeri : </label><input type="text" id="textgiris" />
<label>Okunan Değer : </label><span id="textOkunanCerez" style="font-weight:bold;"></span>
<br/><br/>

<input type="button" value="Çerez Yaz" onClick="CerezYaz()" />  
<input type="button" value="Çerez Oku" onClick="CerezOku()" />  
<input type="button" value="Çerez Sil" onClick="CerezSil()" />

<script type="text/javascript">

// OrnekCerez'i zaman aşımı süresini 10 dakikaya ayarlayarak yazar
function CerezYaz()
{
	if(CerezIzin() == false) return;
	
	var cerezSure = new Date();
	cerezSure.setMinutes(cerezSure.getMinutes() + 10); // 10 dk ekleniyor.
	var cerezIsim = "OrnekCerez";
	var cerezDeger = document.getElementById('textgiris').value;	
	document.cookie = cerezIsim +"="+ escape(cerezDeger) + ";expires=" + cerezSure.toGMTString();
}

// OrnekCerez'i okuyarak span içine yazar
function CerezOku()
{
	if(CerezIzin() == false) return;
	
	var Cerez = document.cookie;
	var Duzenli = new RegExp("OrnekCerez=([^;=]+)[;\\b]?");
	if(Duzenli.test(Cerez))
	{
		Sonuclar = Duzenli.exec(Cerez);
		document.getElementById('textOkunanCerez').innerHTML = unescape(Sonuclar[1]);
	}
	else alert("Çerez bulunamadı");	
}

// OrnekCerez'i expire tarihini 10 sene önceye ayarlayarak siler.
function CerezSil()
{
	if(CerezIzin() == false) return;
	
	var sure = new Date();
	sure.setFullYear(sure.getFullYear() - 10);
	document.cookie = "OrnekCerez=;expires=" + sure.toGMTString();
}

// Tarayıcının çerez desteğini kontrol eder. Destekliyorsa true döndürür.
// Diğer türlü uyarı gösterir ve false döndürür.
function CerezIzin()
{
	if(window.navigator.cookieEnabled)
		return true;
	alert("Tarayıcınız çerezlere izin vermiyor.");
	return false;
}
</script>
Test edin


   
İlgili Başlıklar
 
myNotlar Hakkında
Telif Hakkı © 2007-2009 mynotlar.com Tüm Hakları Saklıdır. Kopyalanamaz. Yayınlanamaz.
E-Posta : support@myNotlar.com

| Tek Kişilik Oyunlar | Sudoku | Oyunlar |