Php Cookie (Çerez Nesneleri) Kullanımı

php-cookie

Php Cookie (Çerez)

Php cookie(çerez) nesneleri yazılımcı tarafından kullanıcının bilgisayarına bırakılan küçük veri dosyalarıdır. Örneğin alışveriş sepetindeki ürünleri yazdığı çerez oluşturma kodu ile kullanıcının bilgisayarında saklayabilir. Çerez nesnelerinin özelliklerini kısaca aşağıdaki listeden inceleyin.

  • Çerez nesneleri tanımlandığı kullanıcı için geçerlidir. 
  • Çerez nesneleri kullanıcının bilgisayarında saklanır.
  • Çerez nesneleri erişmek ve düzenlemek çok kolay olduğu için güvenli değildir. Önemli verilerin saklanmaması gerekir.
  • Çerez nesneleri süreleri dolduğunda otomatik olarak silinir.

Kısaca çerezler kullanıcı tekrar aynı siteyi ziyaret ettiğinde bilgilerinin hatırlanması için kullanılır. Çerezler genellikle anketlerde, sayaç uygulamalarında, alışveriş sepetlerinde ya da beni hatırla seçeneklerinde kullanılmaktadır.

Cookie (Çerez) Oluşturma

Php cookie(çerezler) hakkında temel bilgileri öğrendik. Kullanımı ve tanımlaması oldukça basittir. Bir çerez oluşturmak için setcookie() php fonksiyonu kullanılır. Aşağıdaki cookie oluşturma yazım şeklini inceleyelim.

setcookie(“çerez ismi”, “saklanacak veri”, “saklama süresi”, “geçerli olduğu dizin”, “geçerli olduğu adres”, “https”, “sadece http”);

Yukarıdaki gibi bir yazım şekli vardır. 7 parametre alıyor. Bu parametreleri aşağıdaki listede ne anlama geldiklerini inceleyelim.

Cookie (Çerez) Parametreleri

  • Çerez ismi adı üstünde oluşturacağımız çereze ulaşmak için kullanacağımız ismidir. Veri tipi stringdir.
  • Saklanacak veri string türünde değer alır. Çerezi saklayacağı veriyi temsil eder. 
  • Saklama süresi int türünde değer alır. Çerezin ne kadar süre ile saklanacağını belirtmek için kullanılır. Unix zaman damgası değeri alır. Yani time() fonksiyonundan dönene unix zaman damgası üzerine eklenen süre kadar saklanacağı anlamına gelmektedir. Php Zaman Fonksiyonları konusunda Unix zaman damgası ile ilgili örnek bulabilirsiniz.
  • Geçerli olduğu dizin string türünde değer alır. Çerezin etkili olacağı yolu belirtir. ‘/’ olarak belirtilirse çerez alanın tamamında kullanılabilir. Eğer ‘/örnek’ olarak belirtilirse sadece örnek dizininde ve örnek dizinin alt dizinlerinde erişilebilir.
  • Geçerli olduğu adres string türünde 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. (ornek.com) şeklindeki kullanım ise alt alanlarda(subdomain) kullanımı mümkün kılacaktır. Bir örnek daha gerekirse (www.ornek.com/admin) kullanımı sadece admin alanında çereze erişmeyi mümkün kılacaktır.
  • Https bool tipinde(true, false) değer alır. Çerezin Https bağlantısı üzerinden kullanılması için kullanılır. True belirtildiği takdirde, çerez sadece güvenli bağlantı mevcutsa kullanılabilir.
  • Sadece http bool tipinde (true, false) değer alır. True belirtildiğinde sadece HTTP protokolü üzerinden erişilebilir. Yani Javascript ile erişmek mümkün olmayacaktır.

Aşağıdaki basit örneği inceleyelim tüm bu parametreleri tek tek örnek olarak vermeyeceğim. Diğer parametreleri deneyerek sonuçlarını görebilirsiniz.

Örnek kullanım:

<?php 
setcookie("telefon");
?>

Yukarıdaki kullanım telefon isminde bir çerez oluşturacaktır. Fakat saklanacak veri girilmediği için değeri boştur (null) ve tarayıcı kapatıldığında otomatik olarak silinir.

Örnek kullanım:

<?php
setcookie("telefon", "555 555 5555);
?>

Yukarıdaki örnekte bu sefer telefon çerezimize saklaması için birde değer gönderdik fakat saklama süresi belirtmediğimiz için tarayıcı kapatıldığında otomatik olarak çerezimiz silinecektir.

Örnek kullanım:

<?php 
setcookie("telefon", "555 555 5555", time()+60*60*24), "/deneme";
?>

Yukarıdaki örnekte telefon çerezimizin süresini ve erişilebileceği dizini belirttik. Burada sürenin Unix zaman damgası üzerine yine aynı türde eklenerek belirtildiğini söylemiştim. 86.400 saniye yani 24 saatlik bir süre belirtmiş olduk. Çerez 24 saat boyunca sadece /deneme dizini ve alt dizinlerinde geçerli olacaktır.

Tanımladığımız çerezleri tarayıcı aracılığı ile görmek mümkündür. Aşağıdaki ekran görüntüsünü inceleyelim.

Çerez Tarayıcı Görünümü

Cookie (Çerez) Değerine Erişim

Oluşturduğumuz çerezler php uygulamamızda erişmek için $_COOKİE küresel değişkenini kullanıyoruz. Eğer bir çerez oluşturulmuş ise ve hala geçerli ise küresel değişkenimiz ile erişebiliriz. Fakat çerez tanımlanmamış ve geçerliliğini yitirmiş ise küresel değişkenimiz boş(null) değer döndürecektir. 

Örnek kullanım:

<?php
setcookie("meyve", "Armut", time()+60*60);
echo $_COOKIE["meyve"];
?>

Meyve adında 1 saatlik bir çerez oluşturduk ve armut değerini saklamasını söyledim. Echo komutu ile çerezimizin değerini ekrana yazdırdık. Kullanımı bu kadar basit. Kodu ilk çalıştırdığımızda uyarı hatası verebiliriz. Çünkü çerezin tanımlandıktan sonra ekrana yazdırmak için sayfayı bir kere yenilememiz gerekmektedir. Sayfa yenilenmediğinde çereze erişmek mümkün olmayacaktır.

Cookie (Çerez) Tanımlı Mı?

Bir $_COOKIE global değişkeni ile işlem yapmadan önce çerezin varlığını kontrol etmemiz gerekir. Bir şeyin tanımlı olup olmadığını kontrol etmek için isset() php fonksiyonunu kullanırız.

Örnek kullanım:

<?php
if(isset($_COOKIE["meyve"])){
    echo $_COOKIE["meyve"];
}else{
    echo "Çerez oluşturulmamış, şimdi oluşturuldu, sayfayı yenile.";
    setcookie("meyve","armut",time()+60*10);
}
?>

Yukarıdaki örnek kullanımda meyve isminde bir çerez olup olmadığını kontrol ettik. Çerez yok ise ekrana bir mesaj yazdırdık ve meyve ismindeki armut değerini saklayan 10 dakikalık bir çerez oluşturduk.

Yukardaki isset() fonksiyonu ile yaptığımız işlemin aynısını empty() fonksiyonu ile yapmak mümkündür. empty() fonksiyonu çerez değişkeninin değeri boş (null) ya da sıfıra (0) eşit ise true tersi false değerini döndürür. false değeri döndürdüğünde çerez ekrana yazdırılır. Bu durumda aşağıdaki örneği inceleyelim.

Örnek kullanım:

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

isset() fonksiyonu ile yapılan işlemin aynısını empty() fonksiyonu ile yaptık.

Cookie (Çerez) Silme

Oluşturduğumuz çerezleri silmek için çerezin geçerliliğini yitirmiş olması gerekir. Çerezin geçerliliğini yitirmesi geçmiş bir tarih ile tekrar düzenlenerek silinmesi sağlanır. Tarihi geçtiği için çerez otomatik olarak kullanıcının bilgisayarından silinir.

Örnek kullanım:

<?php
setcookie("meyve","",time()-1);
if(isset($_COOKIE["meyve"]) != true){
echo "Çerez değeri boş";
}
?>

Meyve isimli çerezin süresini ve değerini yeniden düzenleyerek çerezin geçersiz olmasını sağladık. Burada time() -1 kullanımı şimdiki zamandan 1 saniye öncesini ifade etmektedir. Böylece çerez geçerliliğini yitirmiş olur ve otomatik olarak kullanıcının bilgisayarından silinir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir