Php Cookie (Çerez) nesneleri web sitelerin bilgisayarımız bıraktığı küçük veri dosyalarıdır. Bırakılan bu çerezler (cookie) aynı siteyi tekrar ziyaret ettiğinizde kullanılmaktadır. Örnek olarak bir e-ticaret sitesinde sepete eklenen ürünleri aynı siteyi daha sonra tekrar ziyaret ettiğinizde sepetinizde hala kayıtlı durmasını verebiliriz. Başka bir örnek giriş yaptığınız sitede beni hatırla seçeneğini verebiliriz. Beni hatırla seçeneğini işaretlediğinizde ve tekrar aynı siteyi ziyaret ettiğinizde giriş bilgileriniz kayıtlı görünmektedir.
- Çerezler (cookie) tanımlandığı kullanıcı için geçerlidir.
- Çerezler (cookie) kullanıcının bilgisayarında saklanır.
- Çerezlere (cookie) erişmek ve düzenlemek çok kolay olduğu için güvenli değildir. Önemli verilerin çerez olarak saklanması önerilmez.
- Çerezler (cookie) süreleri dolduğunda otomatik olarak silinmektedir.
Php Cookie (Çerez) Oluşturma
Bir çerez oluşturmak için setcookie fonksiyonunu kullanıyoruz.
<?php setcookie("çerez ismi", "saklanacak veri", "saklama süresi", "geçerli olduğu dizin", "geçerli olduğu adres", "https", "sadece http"); ?>
Çerez Parametreleri
Parametre | Açıklama |
Çerez İsmi | Çereze ulaşmak için kullanacağımız isimdir. |
Saklanacak Veri | String tipinde değer alır. Çerezin saklayacağı veriyi temsil eder. |
Saklama Süresi | Int tipinde değer alır. Çerezin ne kadar süre ile saklanacağını belirtir. Unix zaman damgası değeri alır. |
Geçerli Olduğu Dizin | String tipinde değer alır. Çerezin etkin olacağı yolu belirtir.’/‘ olarak belirtilirse çerez alanın tamamında kullanılabilir. Eğer ‘/ornek‘ olarak belirtirilirse sadece ornek dizininde ve onun alt dizinlerinde kullanılabilir. |
Geçerli Olduğu Adres | String tipinde değer alır. Çerezin kullanılabileceği alanı belirtir.(www.ornek.com) bu kullanım sadece ornek.com alanında çereze erişmeyi mümkün kılacaktır. (www.ornek.com/ornek) kullanımı sadece ornek alanında kullanıma izin verecektir. |
Https | Bool(true,false) tipinde değer alır. Çerezin sadece https bağlantısı mevcutsa kullanılmasına izin verir. (True belirtildiyse) |
Sadece Http | Bool(true,false) tipinde değer alır. Sadece http protokolü üzerinden erişilebilir. Javascript ile erişmek mümkün değildir. |
Aşağıda telefon isimli çerez tanımlaması gerçekleştirdik fakat herhangi bir süre belirtmediğimiz için tarayıcı kapatıldığında çerezimiz otomatik olarak silinecek.
<?php setcookie("telefon", "555 555 5555"); ?>
Aşağıda telefon isimli çerezimizin hem süresini (24 saat) belirttik hem de kullanılabileceği dizini belirttik. Böylece telefon çerezimiz sadece deneme ve deneme dizininin tüm alt dizinlerinde geçerli olacaktır.
<?php setcookie("telefon", "555 555 5555", time() + 60 * 60 * 24, "/deneme"); ?>
Yukarıda çerezin süresini unix zaman damgası ile belirttik farklı bir kullanım olarak strtotime fonksiyonu ile belirtmek mümkün.
<?php setcookie('telefon','555 555 5555',strtotime('+7 days')); ?>
Tanımladığımız çerezi tarayıcı üzerinde görmek mümkündür. Aşağıdaki ekran görüntüsünden inceleyebilirsiniz.
Php Cookie (Çerez) Değerine Erişim
Oluşturduğumuz çerezlerin sakladığı değerlere erişebilmek için $_COOKIE süper global değişkenini kullanıyoruz. Eğer bir çerez oluşturulmuş ve hala geçerli ise $_COOKIE süper global değişkeni ile erişilebilir ancak çerez oluşturulmamış veya geçerliliğini yitirmiş ise null değer döndürür.
<?php setcookie("meyve", "Armut", time() + 60 * 60); echo $_COOKIE["meyve"]; ?>
Çerez Tanımlı Mı?
$_COOKIE süper global değişkeni ile çereze erişmeden önce erişmek istediğimiz çerezin varlığını kontrol etmemiz gerekir. Bir şeyin(değişken, cookie, session vs.) tanımlı olup olmadığını kontrol etmek için isset() fonksiyonunu kullanıyoruz.
<?php if (isset($_COOKIE["meyve"])) { echo $_COOKIE["meyve"]; } else { echo "Çerez oluşturulmamış, şimdi oluşturuldu, sayfayı yenile."; setcookie("meyve", "armut", time() + 60 * 10); } ?>
Örneğimizde meyve isimli bir çerezin olup olmadığını kontrol ettik ve eğer tanımlanmamış ise 10 dakika geçerli olacak şekilde oluşturulmasını sağladık. isset fonksiyonu ile yaptığımız kontrol empty fonksiyonu ile de yapabiliriz.
empty fonksiyonu çerez değişkeninin değeri boş(null) yada sıfıra eşit ise true tersi ise false değerini döndürür.
<?php if (empty($_COOKIE["meyve"]) != true) { echo $_COOKIE["meyve"]; } else { setcookie("meyve", "elma", time() + 60 * 10); echo "Çerez oluşturulmamış, şimdi oluşturuldu, sayfayı yenile."; } ?>
Çerez Silme
Çerezlerin silinmesi için geçerliliğini yitirmiş olması gerekmektedir. Çerezin geçerliliğini yitirmesi demek tanımlanan sürenin geçmiş olması demektir. Bu nedenle 1 saatlik tanımlamış olduğumuzu varsayarsak aynı çerezi -1 saatlik tanımlarsak geçerliliğini yitirecektir.
Meyve isimli çerezimizi süresini ve değerini yeniden düzenleyerek çerezin geçersiz olmasını sağlamak amacıyla time()-1 tanımlaması yaptık. Böylece çerez geçerliliğini yitirmiş olacak ve otomatik olarak silinecektir.
<?php setcookie("meyve", "", time() - 1); if (isset($_COOKIE["meyve"]) != true) { echo "Çerez değeri boş"; } ?>