Site icon TR Kodlama

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); ?>

Ş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,

Exit mobile version