Skip to content

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:

<?php 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?

<?php
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:

<?php
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,

TR Kodlama GitHub'da!

TR Kodlama'da yer alan makaleleri GitHub üzerinden düzenleyebileceğinizi biliyor muyudunuz? Harika değil mi? Bu makale ile ilgili düzenleme yapmak isterseniz aşağıdaki butona tıklayınız!

GitHub'da Görüntüle ve Düzenle!