php

PHP’de Cookie’ler

Çerezler internet kullanıcılarının bilgisayarlarına web siteleri tarafından bırakılan bir nevi kimlik işlevi gören küçük dosyalardır. Web siteleri bu kimliklerle sizleri tanır.
Mesela projenizde “Beni Hatırla” seçeneği sunmak istiyorsunuz; bu işlemde sizin yardımınıza çerezler yetişir. Tabii ki farklı yollarla bu işlemi oturum(session) ve veritabanı ikilisiylede halledebilirsiniz ama çerezleri kullanmak kadar basit bir yöntem varken buna neden ihtiyaç duyarsınız ki?
Çerez Oluşturma
PHP ile çerezlerimizi setcookie() fonksiyonu ile kuruyoruz. Hemen bir örnekle açıklayalım:

setcookie($ad, $deger, $bitis, $dizin, $domain, $guvenli);
  • $ad – çerezin adı. Örn: “kullaniciAdi”
  • $deger – çerezin değeri. Örn: “sagoral”
  • $bitis – UNIX zamandamgası şeklinde olmalı ve çerezin geçerlilik süresini belirdir. Örnek: time()+3600 Yani bir saat
  • $dizin – çerezin geçerli olacağı dizini belirtirsiniz.
    Mesela eğer dizin “/” olarak ayarlanmışsa bütün sitede geçerli olacaktır bu çerez fakat “/forum/” şeklinde ayarlansaydı çerez sitenizin trkodlama.com/forum/ adresinde geçerli olacaktı.
    Bu bölümü doldurmak isteğe bağlıdır. “/” değeri varsayılandır.
  • $domain – çerezin geçerli olacağı alanları belirlersiniz.
    Örneğin “.trkodlama.com” olarak belirlerseniz çerez altdomain.trkodlama.com, deneme.trkodlama.com adreslerinde de geçerli olur.
    Bir diğer şekli ise “www.trkodlama.com” şeklinde belirlerseniz sadece ana alan adı ve alt klasörlerde çalışır çerez. www.trkodlama.com/forum/, www.trkodlama.com/makaleler/ gibi..
  • $guvenli – boolean tipidir. Sitenizin güvenli(https) sunucu olup olmadığını bildirir. Varsayılan ayarı false’dur

Şimdi örnek bir çerez oluşturalım:

<?php
/* setcookie() fonksiyonunu bu şekilde kullanmak ile
**  setcookie("kullaniciAdi", "sagoral", time()+3600, "/", ".trkodlama.com", false);
**  bu şekilde(alt satırdaki) kullanmak arasında hiçbir fark yoktur. */
setcookie("kullaniciAdi", "sagoral", time()+3600);
?>

kullaniciAdi isimli bir çerez oluşturduk ve değerini desagoral yaptık. Bu çerez time()+3600 dediğimiz için bir saat süreyle geçerli olacaktır.
Uyarı: setcookie() fonksiyonu her zaman HTML içerik gönderilmeden önce kullanılmalıdır. Aksi taktirde “Warning: Cannot modify header information…” şeklinde bir uyarıyla karşılaşırsınız. Gerekli çözüm linkte yazıyor.
Bir Yıllık Çerez Oluşturalım
Şimdiki çerezimizi bir yıllık oluşturalım bakalım time() değerini nasıl değiştiriyoruz?

setcookie("kullaniciAdi", "sagoral", time()+(60*60*24*365));

Bu şekilde çerezin bitiş süresi tam bir yıl sonrası oldu.
Çerezi Okuma
Şimdi çerez değerini çekelim. “kullaniciAdi” adlı bir çerez oluşturduk ve buna “sagoral” değerini atadık. Şimdi sayfalarımızda bu değeri nasıl çağırabiliriz ona bakalım:

<?php
// Oldukça kolaydır
echo $_COOKIE["kullaniciAdi"];
?>

Şu anda “sagoral” adını ekrana yazdırmış olduk.
Çerezi Silme
Sıradaki işlemimiz ise değerini “sagoral” olarak atadığımız çerezi silme:

setcookie("kullaniciAdi", "", time()-3600);

Burada dikkat etmemiz gereken nokta şu, eğer çerezi eklerken bitiş süresini time()+3600 olarak belirlediysek silerkende time()-3600 olarak yazmamız gerekiyor. Aksi taktirde problem yaşayabilirsiniz.
Kolay gelsin,

Post Author: Oral ÜNAL

Web geliştirmeyi başta meslek olarak hayal eden fakat daha sonra bir hobi haline getiren birisiyim işte.

Yorum yazma sırası sizde!