Cookies (Cerez
Dosyalari):
Kucuk,hafif,portatif oldukca hizli bir veri depolama bicimi...Iste
bunun ismi ne yazikki Turkce'de "cerez dosyasi".(Onlarin
kulturunde kurabiye bizim kulturumuzde cerez agir basiyor
herhalde..)
Biraz detaya girmek gerekirse, istemci-server arasindaki veri
iletisiminde bu "cerez dosyalari" istemci tarafin tarayicisinda(browser'inda)
kucuk capli verileri saklamak icin gelistirilmistir.
Kullanim alani: Kucuk,fakat oldukca yardimci olabilecek "kritik"
olmayan verilerin saklanmasidir.Buna en iyi ornek sitenin
gorunumunu istedigi gibi degistiren kullanici icin ayarlarin
kendi bilgisayarinda,kullandigi tarayicinin ozel bir alaninda
"cerez dosyasi" tabir edilen kucuk dosyalarda saklanmasdir.
Nasil Kullanilir?
Bunu kesin kurallara dayandirarak aciklamak mumkun degil cunku
ziyaretcinin kullandigi browser'dan browser'a degisiklik gostermektedir.
Simdi size anlatacaklarimiz "cerez dosya"larinin kullanimina
iliskin genel kurallardir.
"Cerez Dosyasi"
bir parca verinin, (degisken ismi ve o degiskene ait deger)
saklanmasi icin istemci tarafin hard diskinde browser kontrolunde
yaratilan dosyadir.
"Cerez Dosya"lari
ile istemci-tarafinda veri saklanabilmektedir.
Web siteleri genellikle
kendi "Cerez Dosya" larini yeniden duzenleyebilir veya islem
yapabilirler.
Eger minumum guvenlik
kriterleri saglanmis ise,"Cerez Dosya"si yanlizca ilk anda
gonderilen server tarafindan tekrar erisilebilirler.
Istemci bilgisayar, "cerez dosyasi" kullanan bir web sitesini
goruntulemeye calistigi zaman,Web Server istemci tarafa
(ki bu genellikle kullanicinin browser programi olur) bir
parca veriyi daha sonra kullanilmak uzere saklamasi icin
verir.Bunun ardindan artik o veriden istemci taraftaki bilgisayar
sorumludur."Cerez Dosyasi" destekleyen browserlar bu islemi,
"cerez dosya"sini gonderen sitenin ismini dosya ismi olarak
kullanarak yaparlar.
Bu veriye yapilacak daha sonraki isteklerde buradan alinan
bilgilerin bir kopyasi Web Server'a gonderilir.Bu veriler
daha "cerez dosyasi" yaratilirken belirledigimiz omur sureleri
dolana kadar istemci tarafin bilgisayarinda saklanir.Omur
sureleri dolan "cerez dosyalari" sistemden silinirler.
"Cerez dosya"lari yaratilirken server tarafi,istemci tarafa
bu verileri ne kadar sure ile saklamasi gerektigini bildirir.Bu
bildirim temel olarak "saniye" cinsinden bir rakam
vermek suretiyle yapilir.
Eger belirtilen sure "0" ise istemci bilgisayarda bu "cerez
dosya"si kullanici browser penceresini kapatana kadar saklanir
ve sonra hard disketen silinmesi suretiyle yok edilir.
Elbette istemci tarafta saklanan veriler icin,server tarafindan
bir kontrol soz konusu degildir.Bir defa yaratildiktan sonra
server tarafindan bu dosyalar uzerindeki tum hakimiyet kaybolur.Kullanici
bu dosyalarin icinde saklanan verileri degistirebilir,duzenleyebilir,silebilir
veya tumunu oratadan kaldirabilir.Bu durumda, bir web prgramcisi
olarak istemci taraftaki verilere supheci yaklasmak ve kritik
olan verileri bu sekilde saklamak yolundan kendimizi ali
koymak gereklidir.
ONEMLI:Web Serverlar "cerez dosya"larini HTTP header
olarak gondermektedir. Bu nedenle herhangi bir HTML ciktisi
goruntulenmeden once istemciye gonderilmelidir.(Istemci
tarafta ayni sekilde server istedigi zaman bu "cerez dosya"
sini HTTP Header olarak gondermektedir.)
Istemci taraf hangi "cerez dosya"sinin hangi web sitesinden
geldigini bilmektedir.Bu nedenle eger www.php.net sitesini
goruntuluyorsaniz kullandiginiz browser www.turk-php.com
sitesinden alinmis bir "cerez dosya" sini asla bu siteye
gondermeyecektir.
PHP ve Cerez Dosyalari
PHP en gelismis scripting dillerinden birisidir.Bu nedenle
cok guclu bir "cerez dosyasi" destegi ile beraber gelmektedir."Cerez
Dosyasi" degiskenlerini yaratmak icin setcookie () fonksiyonu
kullanilmaktadir.Bu fonksiyon ayni header() fonksiyonunda
oldugu gibi kullanicinin bilgisyarinda herhangi bir HTML
goruntulenmeden once kullanilmalidir.
setcookie () fonksiyonu nasil kullanilir?
Bu fonksiyon toplam alti tane parametre almaktadir.bunlarda
yanlizca ilk ucu en onemli olanlaridir.
Degiskenin ad
degeri
Degiskenin sakladigi
deger
UNIX Timestamp
(Olusturulan "cerez dosyasi" icin omur degeri.Saniye olarak.)
Not: UNIX Timestamp integer olarak 01/01/1970 gece yarisindan
baslayan ve verilen zaman araligina kadar gecen zamanin
saniye olarak sayilmasidir.O andaki gecerli zamani bu formatta
gormek icin time () fonksiyonunu kullanabilirsiniz.Eger
simdi bulundugumuz andan itibaren 1 saat icinde omru bitecek
bir "cerez dosyasi" yaratmak istersek bunu en kisa sekilde
time ()+3600 yazarak saglayabiliriz.
Diger uc parametre degeri genel olarak kullanilmamaktadir.Burada
size bilgi olmasi acisindan aciklanmistir.
"Cerez dosyasi"
ile ilgili web sitesi icin tanimlanan yollar...Ornek vermek
istersek eger bu parametreyi "/dorduncu/parametre/icin/yol/bir"
olarak ayarlarsaniz sitenizden "/dorduncu/parametre/icin/yol/iki"
sayfasi icin bu "cerez dosyasi" istemci tarafindan gonderilmeyecektir.
"Cerez Dosya"sinin
uygulanacagi "domain" adi degeri.Eger web Server birden fazla
domain adina sahipse bu parametreyi kullanamak uygun olacaktir.
Integer olarak
"secure" degeri.1 olarak ayarlandigi zaman bu "cerez dosyasi"
yanlizca SSL-sifrelenmis sayfadan istendigi zaman gonderilecektir."Cerez
dosyasi" kullanici bilgisyarinda herhangi bir sifreleme kullanilarak
saklanmaz.
Tum bu bilgilerin isiginda bir ornek yapmak istersek,asagida
yazacagimiz format genel olarak butun ihtiyaclariniza cevap
verecek seviyededir.
setcookie ("fontozellikleri", "", time()+3600);
Yaratilan bu "cerez dosyasi" icinde saklanan verilere erismek,yukaridaki
yaratma isleminde bile kolaydir.Cunku bu veriye ulasirken
hic bir sey yapmaniza bile gerek YOKTUR.
Butun POST degiskenlerinde oldugu gibi yanlizca adini yazip
kullanmaniz yeterlidir.PHP otomatik olarak global domaine
ait "cerez" degiskenleri ile ilgili degerleri yerlestirmektedir.Ornek
vermek gerekirse "cerez dosyasi" icinde "fontozellikleri"
ismi ile saklanan degisken,scriptler icinde global degisken
olarak $fontozellikleri ismi ile kullanilabilir olarak hazir
olacaktir.
Cerez dosyasini nasil silerim?
"Cerez Dosya"sini silmek icin bir kac yol bulunmaktadir.Elbette
istemci bilgisayari kontrol eden kisi nereye bakmasi gerektigini
biliyorsa her zaman icin bu dosyalari duzenleyebilir veya
silebilir.Buradaki teknikler server tarafindan bu "cerez
dosya" larini nasil sileceginize iliskin bilgileri icermeketedir.
"Cerez dosya"sinin
omrunu sifirlayin.Bunu yapmak icin gecmisteki bir tarihi vererek
"cerez dosyasini" yeniden yaratamakta cerezi silmek icin kullanisli
bir cozumdur...
setcookie ("num", "0", time()-9999);
"Cerez dosya"sini
yanlizca degisken ismini belirterek tekrar yaratin.
setcookie ("fontozellikleri");
bu durumda "cerez dosyasi" gecersiz kabul edilecek ve silinecektir.
Simdi ornek bir uygulama yapalim.
1.Text editorunuzu acin ve asagidaki kodlari yazin.
<?
//cerezdosyasi_test.php
//Once POST degiskenlerimizi kontrol ediyoruz.Buna bagli
olarak cookie koyuyoruz.
if ($tip_secim) setcookie ("font[tip]", $tip_secim, time()+3600);
if ($boyut_secim) setcookie ("font[boyut]", $boyut_secim,
time()+3600);
//Font tipi ve boyutu icin HTML formunda kullanilmak uzere
iki dizi hazirliyorum.
$tipler = array ("arial","helvetica","sans-serif","courier");
$boyutlar = array ("1","2","3","4","5","6","7");
echo "<HTML><HEAD><TITLE>Cerez dosyalari
icin ornek makale</TITLE></HEAD><BODY><DIV
ALIGN='CENTER'>";
//Burada iki tane liste kutusu yaratiyoruz.Kullanici font
ve boyutu buradan seciyor.
echo "<FORM METHOD=POST>";
echo "Hangi yazi fontunu kullanmak istersiniz? ";
echo "<SELECT NAME='tip_secim'>";
echo "<OPTION SELECTED VALUE=' ' >Ongorulen</OPTION>";
foreach ($tipler as $diziyilisteyekoy) echo "<OPTION>$diziyilisteyekoy</OPTION>";
echo "</SELECT><BR><BR>";
echo "Hangi yazi boyutunu kullanmak istersiniz? ";
echo "<SELECT NAME='boyut_secim'>";
echo "<SELECTED VALUE=' ' >Ongorulen</OPTION>";
foreach ($boyutlar as $diziyilisteyekoy) echo "<OPTION>$diziyilisteyekoy</OPTION>";
echo "</SELECT><BR><BR>";
echo "<INPUT TYPE=SUBMIT>";
echo "</FORM>";
//Son olarak sonuclari ekrana yaziyoruz.Buradan kullanici
sakladigi degerleri gorebiliyor.
echo "Cerez dosyalariniz diyorki:<BR>";
echo "<FONT ";
if ($font[tip]) echo "FACE=$font[tip] ";
if ($font[boyut]) echo "SIZE=$font[boyut] ";
echo ">";
echo "$font[tip] = $font[tip]<BR>";
echo "$font[boyut] = $font[boyut]";
echo "</FONT><BR>";
echo "Form degiskenleriniz diyorki:<BR>";
echo "<FONT ";
if ($tip_secim) echo "FACE = $tip_secim";
if ($boyut_secim) echo "SIZE = $boyut_secim";
echo ">";
echo "$tip_secim = $tip_secim<BR>";
echo "$boyut_secim = $boyut_secim<BR>";
echo "</FONT>";
echo "</DIV></BODY></HTML>";
?>
2.Bu dosyayi "cerez.php" olarak kayit edin.
3.Browser ile sayfayi goruntuleyin.
Ornek Dosyalar
http://www.turk-php.com/ornekler/cerez.php
http://www.turk-php.com/ornekler/cerez.phps
Her turlu gorus ve onerinizi simdi bu sayfanin altindaki
"Bu konu hakkinda ne dusunuyorsunuz?" baslikla alana
yazabilirsiniz.
Serkan Hadi Ceylani
serkan@turk-php.com
|