Php Cookie Kullanımı

Php Cookie(Çerez) Kullanımı

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

ParametreAçıklama
Çerez İsmiÇereze ulaşmak için kullanacağımız isimdir.
Saklanacak VeriString tipinde değer alır. Çerezin saklayacağı veriyi temsil eder.
Saklama SüresiInt 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 DizinString 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 AdresString 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.
HttpsBool(true,false) tipinde değer alır. Çerezin sadece https bağlantısı mevcutsa kullanılmasına izin verir. (True belirtildiyse)
Sadece HttpBool(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 Kullanımı

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ş";
}
?>

Bir Cevap Yazın