PHP’de COOKIE (Çerez) İşlemleri

Ziyaretçi bilgisayarında, ziyaretçiyi takip edebilmek için bilgisayarında siteyle ilgili çerez dediğimiz küçük veriler saklanabilir. Böylece sitemize giren kullanıcı pazarlama,  üyelik girişi sırasında kullanıcı adının tanınması veya otomatik sisteme giriş yapılması gibi olanaklar mümkün hale gelir.

Çerezler, yalnızca oluşturuldukları web sitesi geçerli olurlar. Çerezin geçersiz duruma geleceği bir tarih bilgisi tanımlanır. Böylece henüz sisteme giriş yapmamış kullanıcının sepet eklediği ürünlerin 1 hafta daha sepette tutulması, şifresiz girişin 1 ay süreyle kullanılmaya devam edilmesi gibi işlevler gerçekleştirilir. Oluşturulan her bir çerez, yalnızca kullanılan tarayıcıda geçerlidir.

Cookie’ler ziyaretçinin (diğer bir deyişle istemci) bilgisayarında saklanır. Öneğin Chrome ile “beni hatırla” seçeneği işaretlenerek doldurulmuş bir üye girişi formu ile Chrome tarayıcısı kullanıldığında şifre yazma zorunluluğu ortadan kalkacak ancak Firefox ile girildiğinde kullanıcının tanınma işlemi gerçekleştirilmeyecektir.

PHP’de cookie oluştururken dikkat edilmesi gereken şey, oluşturulan cookie’nin <html> etiketinden önce yerleştirilmesidir.

PHP’de Cookie Oluşturma

PHP’de çerez (cookie) oluşturabilmek için setcookie() fonksiyonu kullanılır. Fonksiyon sırasıyla çerez değişkeninin adı, değeri, son geçerlilik süresi, etkili olacağı alan olmak üzere parametreler alabilir.

Genel kullanımı yukarıdaki gibi olan cookie’nin çerez adı ve değeri dışındaki parametreler yazılmasa da çalışmaktadır. Eğer bitiş zamanı yazılmazsa, tarayıcı kapatılana kadar geçerli olmaya devam edecektir.

Geçerlilik süresini ifade ederken mevcut zamanın üzerine istenildiği kadar saniye cinsinden değer eklenerek hesaplanır. Mevcut zamanı saniye cinsinden hesaplamak için time() fonksiyonu kullanılır.

Kullanıcı adı bilgisini $kullanici_adi isimli değişkenden alıp bunu 1 saat süre tutan cookie komutu aşağıdaki gibidir:

Kullanıcı adı bilgisini $kullanici_adi isimli değişkenden alıp bunu 1 ay süre tutan cookie komutu aşağıdaki gibidir:

Dikkat edilirse 1 saatin kaç saniye olduğu bilgisi, 60*60 ile bulunabiliyor. Dolayısıyla saat, gün, ay, yıl gibi birimlere çeviri yapmak için ilgili zaman dilimini çarpma işlemine sokmak yeterlidir.

  • time() + 60: 60 saniye = 1 dakika
  • time() + 60*60: 60 dakika = 1 saat
  • time() + 60*60*24: 24 saat = 1 gün
  • time() + 60*60*24*5: 5 gün
  • time() + 60*60*24*7: 7 gün = 1 hafta
  • time() + 60*60*24*30: 30 gün = 1 ay
  • time() + 60*60*24*365: 365 gün = 1 yıl

Eğer oluşturulan cookie’nin yalnızca belirli klasörler altında geçerli olması isteniyorsa “geçerlilik konumu” kısmında bu belirtilir. Kullanıcı adı bilgisini $kullanici_adi isimli değişkenden alıp bunu 1 ay süre tutan cookie, yalnızca web-tasarim klasörü altında geçerli olacaksa bu komut aşağıdaki gibidir:

Yukarıdaki tanımlanan cookie teknikakil.com/web-tasarim/ içinde ve altındaki tüm klasörlerde geçerli olur.

Eğer bir klasör için tanımlı cookie’nin tüm alan adı için geçerli olmasını istersen cookie’yi aşağıdaki şekilde yeniden tanımlayabiliriz:

Eğer cookie’nin tüm alt alan adlarında geçerli olması isteniyorsa;

Eğer cookie’nin yalnızca belirli bir alt alan adında, mesela yalnızca deneme.teknikakil.com üzerinde etkili olması isteniyorsa aşağıdaki cookie komutu kullanılır:

Cookie’den Değer Okuma

PHP’de cookie’den değer okuyabilmek için $_COOKIE global değişkeni kullanılır.

Cookie’yi Silme / Geçersiz Hale Getirme

PHP’de bir cookie’yi silmenin yolu, bu cookie’nin geçerlilik süresini değiştirmektir. Mevcut zamandan 1 saniye öncesinin bitiş süresi olarak ayarlanması, bu cookie’nin geçerliliği kaldırır.

Bu durumda cookie’ye değer verme zorunluluğu yoktur. Silinmek istenen cookie değişkeninin (“kullanici_adi”) doğru yazılması yeterlidir.

Cookie ile İlgili Önemli Noktalar

  1. Cookie’de şifre gibi kritik bilgiler tutulmaz. Cookie istemci, yani ziyaretçinin bilgisayarında saklandığı için ziyaretçinin bu veriyi değiştirme ihtimalinin bulunduğu her zaman göz önünde bulundurulmalıdır.
  2. Bir site, başka bir site için oluşturulan cookie’lere ulaşamaz.
  3. Geçerlilik süresi sonra ermiş bir cookie’ye ulaşılamaz.
  4. Cookie’ler tarayıcıya özgü olarak oluşur.
  5. Cookie ayarlandığı anda aynı sayfada gösterilmez. Bu bir sorun olarak görünse de gösterilmesi için sayfanın sayfanın yenilenmesi gerekir.

 

About Hürkal HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Hürkal HÜSEM →

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.