PHP Cookie(çerez) Kullanımı

Standart

Çerezler web tarayıcılarında text formatında saklanan bilgilerdir. Cookie’ler web tarayıcılarına server tarafından gönderilir. Mesela giriş formlarında kullanıcının şifresini ve kullanıcı adını cookieler sayesinde tarayıcıya kaydederek bir sonraki gelişinde bilgilerini yeniden girmek zorunda kalmadan direkt giriş yapabilir. Genelde Kullanıcı bilgilerini tarayıcıya kaydetmek için kullanılan cookie programlayıcı hayal gücüne bağlı olarak birçok amaç için kullanılabilir. Cookie içerisine 4kb data saklanabiliyor.

PHP cookie oluşturma

Php’de cookie tanımlamak için setcookie() fonksiyonunu kullanıyoruz. Kullanımı ve parametrelerini aşağıda açıklamaya çalıştım.

setcookie($name, $value, $expire, $path, $domain, $secure);

setcookie() fonksiyonunun aldığı parametreler:
$name: Tanımlanan çerezin adı
$value: Çerezin alacağı değer, integer veya string olabilir
$expire: Çerezin geçerliliğini yitireceği süredir. Eğer $expire set edilmezse çerez browser kapandığında geçerliliğini yitirecektir.
$path: Çerezin web server’a döneceği yol
$domain: Çerezin döneceği yol
$secure: True veya false değeri almaktadır. HTTP secure(HTTPs) ile gönderildiğini belirtmek için true değerini alır.

Kullanımını örnekleyelim.

setcookie('user','kamil',time() + (60*60*24));

Bu kodda cookie adı user, değeri kamil, ve son bulma süresi 24 saat olarak belirlendi.

PHP cookie kullanılışı

Bir cookie tanımladığımızda değerine $_COOKIE global array’ini kullanarak erişebiliriz. Cookie değerini okumadan önce isset() fonksiyonunu kullanarak çerezin tanımlanıp tanımlanmadığını kontrol etmek hatalara karşı daha dayanıklı kod yazmamızı sağlayacaktır.

if(isset($_COOKIE['user'])){
echo 'Welcome, '. $_COOKIE['user']. '!';
}

Şeklinde kullanılabilir.

Cookie’leri silmek

Ne yazık ki PHP cookie silmek için bir fonksiyon bulunmamakta fakat bu işlemi setcookie() fonksiyonunu kullanarak yapabiliyoruz. Bu fonksiyonu kullanarak web tarayıcımızı çerezi silmeye zorluyoruz. Bunu da çerezin etkinlik süresini geçmiş bir zaman olarak tanımlayarak yapabiliriz.

setcookie("user", "selam dünya", time() - 3600);

kod bloğu web tarayıcısının çerezi etkinlik süresi dolduğu için silecektir.

Cookie değerini değiştirmek

Çerezleri tanımlama ve silmede olduğu gibi değerlerini değiştirmek de setcookie() fonksiyonu ile yapılmaktadır. Parametreleri uygun şekilde yazdığımızda eğer o isimde çerez varsa güncellenir yoksa yeni bir cookie yaratmış oluruz.

setcookie("user", "kazım", time() + (60*60*24));

Anlattığım her şeyi bir çatıda toplamak gerekirse :

<?php

define('MAX_GORUNTULEME',10);
$msg = '';

//eğer oluşturulmadıysa goruntuleme isimli çerez tanımlanıyor
if(!isset($_COOKIE['goruntuleme'])){
setcookie('goruntuleme',1,0,'/');
$msg = 'Siteme hoşgeldiniz!';
}else{
//eğer bu cookie zaten oluşturulmuşsa $_COOKIE ile okuyoruz
//ve goruntuleme değerini bir artırıyoruz
$goruntuleme = (int)$_COOKIE['goruntuleme'];
$goruntuleme +=1;
//eğer max görüntüleme sayısını aşmadıysak sitenin
//kaç defa ziyaret edildiğini msg değişkenine
//ekrana basılmak üzere formatlayarak atıyoruz
//eğer max görüntüleme aşılırsa cookie yok edilecek
if($goruntuleme <= MAX_GORUNTULEME){
setcookie('goruntuleme',$goruntuleme,0,'/');
$msg = sprintf('Görüntüleme sayısı : %d',$goruntuleme);
}else{
setcookie('goruntuleme','',time() - 3600,'/');
$msg = 'Çerez yok edildi';
}

}
?>

<h1>Cookie Demo</h1>
<?php
echo $msg;
?>

Yorum bırakın