TurkProgrammers.NeT
Ana sayfa Ana Sayfa | Ana sayfanız yapın | Sık kullanılanlara ekle | Rss/Rdf Besleme| JavaScript
Bölümler
Arşiv
paz sa ça cu cum pa
1234
567891011
12131415161718
19202122232425
262728293031

Mailinizi ekleyin
Haberlere abone olun:

anket: Web Programcılığının Geleceğini nasıl görüyorsunuz
Web Programcılığının Geleceğini nasıl görüyorsunuz?
Önü Fazlası ile açık
ilerde yapacak web sitesi kalmayacak
Hazır sistemler işleri iyice bitirecek
Bugünden daha kötü olamaz
Anket sonuçları | Eski Anketler


email Arkadaşınızın maili | print Yazıcı versionu | comment Yanıtlar (0 Gönder)

cookieler

by mustafa bas on Temmuz 23,2007

image

Bu belgede sizlere PHP ile Cookie yönetiminin nasıl yapılacağını anlatacağım.

Cookie'ler nedir? Ne işe yarar?

Cookie'ler web server tarafından üretilen bilgi parçalarıdır ve client bilgisayara
kaydedilirler. Cookie'ler HTML kod içine gömülüdür ve server-client arasında gidip
gelirler. Client'ınız sizin web browser'ınızdır (örneğin Netscape, Lynx). Server ise
web sayfasının bulunduğu makinenin web serveri. (örneğin cclub.ktu.edu.tr ın 80 no'lu
portta çalışan web server'i Apache)

Cookie'ler kişiye özel web sayfası yapmak, sayaç yapmak ve browse yapılırken veri kaydetmek,
istatistik tutmak gibi işlerde kullanılır.

Cookie'ler ve PHP

PHP ile cookie'ler kullanmak oldukça kolaydır. SetCookie fonksiyonu kullanılarak cookie
setlenir. Cookie'ler HTTP header'in bir parçasıdır, bu nedenle SetCookie fonksiyonu, browser'a
henüz hiçbir çıktı gönderilmeden çağrılmalıdır. Bu diğer header fonksiyonları için de
geçerli olan kuraldır. Client'tan size herhangi bir cookie gönderildiği zaman otomatik
olarak bir PHP değişkeni olarak dönecektir size. PHP header'ı alıp parçalar (parse eder),
cookie isimlerini açar ve bu isimleri değişkenlere atar. Mesela SetCookie("isim","baris")
şeklinde bir cookie kullanılırsa PHP otomatik olarak $isim diye bir değişken oluşturup
değerini "baris" yapacaktir. SetCookie'nin tam yapısı şöyledir:

setcookie(string CookieAdi, string CookieDegeri, int CookieBitisZamani, dizin, domain, int guvenlik);

DIZIN : Bu cookie icin web server altındaki dizin. Default değeri istenilen sayfanın bulunduğu
dizindir.

DOMAIN : Bu cookie'nin kullanılabileceği domain ismi. Default olarak istenilen web sayfasının
domain'idir. DOMAIN kısmı iki adet "." içermelidir. ".domainismi.com" şeklindedir.

SECURE : "1" e setlenmesi cookie'nin sadece güvenlikli bir HTTPS bağlantı ile transfer
edilebileceğini gösterir.

Şunu unutmayın ki, cookie'nin görülebileceği bir sayfa load edilene kadar cookie visible
olacaktır. Aynı script içerisinde birden fazla SetCookie kullanılırsa ters sırada
gerçekleştirilecektir. Eğer bir cookie'yi silmek istiyorsanız silmeden önce başka bir tane
ekleyin.

Uygulamalar

Şimdi düşünün ki bir siteyi üye olmaya açacağız. Otomatik olarak kullanıcı tanınacaktır. Veri
tabanı olarak mysql kullanacağım. Küçük bir veri tabanı oluşturup ad, soyad, email ve ziyaretçi
sayısı bilgilerini tutacağım.

mysql> create database users;
Query OK, 1 row affected (0.06 sec)

mysql> use users;
Database changed

mysql> create table info (FirstName varchar(20), LastName varchar(40),
email varchar(40), count varchar(3));
Query OK, 0 rows affected (0.05 sec)

Şimdi cookie'leri kontrol edecek ve veri tabanı ile karşılaştıracak PHP kodu yazalım.

Index.php3
 
 
$info = explode("&", $Example);
$FirstName=$info[0];
$LastName=$info[1];
$email=$info[2];
$count=$info[3];
$count++;

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("Example",$CookieString, time()+3600); //setting new cookie
 
echo"



Hello $FirstName $LastName, this is your visit number: $count


Your email address is: $email



";

mysql_connect() or die ("Problem connecting to DataBase"); //update DB
$query = "update info set count=$count where FirstName='$FirstName' and
LastName='$LastName' and email='$email'";
$result = mysql_db_query("users", $query) or die ("Problems .... ");

} //End Existing cookie instructions

else { //Begin inctructions for no Cookie
echo "




Click Here for Site Registration

";
} //End No Cookie instructions
?>

Eğer MySQL server'i uzaktan kullanıyorsanız mysql_connect() fonksiyonunu şu şekilde kullanın:

mysql_connect ("server","username","password") or die ("Problem connecting to DataBase");

isset() fonksiyonu yardımıyla eğer istediğimiz cookie'ler varsa bunların PHP'ye değişken
olarak gelmesini sağlıyoruz.

...
} else { // Cookie yoksa işletilecek komutlar
...
}

Bizim örnekte eğer cookie varsa sayaç bir artırılacak ve kullanıcıya ait bilgiler ekrana
basılacak. Eğer cookie yoksa üye olmasını isteyeceğiz.

explode() fonksiyonu, bir ayıraçla ayrılmış elemanları string dizisi olarak atar. Böylece
cookie içindeki veriler elde edilir. Bizim örneğimizde bu string '&' ayıraçı ile ayrılmış
adı, soyadı, emaili ve sayaç değerlerini tutar. Kullanımı aşağıdaki gibidir:

$info = explode("&", $Example);

$info[0], $info[1], $info[2], $info[3] şeklinde cookie'mizin elemanlarına ulaşırız. Görüldüğü
gibi explode() fonksiyonunun parametrelerinden biri ayıraç, diğeri cookie ismidir. Okuduğumuz
cookie'nin elemanlarına yeni değerler setleyebiliriz. Örneğimizde:

$counter++;

ile sayaçımızı artırıyoruz. Güncellenmiş bilgileri yazmak için yeni bir cookie oluşturuyoruz.

$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("Example",$CookieString, time()+3600); //setting a new cookie

Yukarki iki satırda:
Önce CookieString'imiz güncellenmiş değerlerle oluşturuluyor. Ayıraç olarak yukardaki PHP
kodla uyumlu olması için '&' kullandım. Daha sonra güncellenmiş bilgileri cookie olarak
browser'a gönderiyorum. Sonra MySQL kullanarak yeni sayaç değerini kendi server'ımda veri
tabanına yazıyorum.

mysql_connect() or die ("Problem connecting to DataBase"); //update DB
$query = "update info set count=$count where FirstName='$FirstName' and
LastName='$LastName' and email='$email'";
$result = mysql_db_query("users", $query) or die ("Problems .... ");

Eğer cookie yoksa kişi register olmadı demektir. Register olması için reg.php3 scripti
çağrılıyor.

reg.php3:
 
 


 

Registering the site







User Name:maxlength=20>
Last Name:maxlength=40>
email addrress:maxlength=40>



Burada bir form ile adı, soyadı ve email bilgisi alınır. Register etmek için bu bilgiler
reg1.php3 scriptine postalanır.

reg1.php3:

if ($FirstName and $LastName and $email)
{
mysql_connect() or die ("Problem connecting to DataBase");
$query="select * from info where FirstName='$FirstName' and
LastName='$LastName' and email='$email'";
$result = mysql_db_query("users", $query);

$r=mysql_fetch_array($result);
$count=$r["count"];

if (isset($count)) {
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("Example",$CookieString, time()+3600);
echo "

user $FirstName $LastName already exists. Using the existing
info.

";
echo "

Back to Main Page";
} else {
$count = '1';
$query = "insert into info values ('$FirstName','$LastName','$email','$count')";
$result = mysql_db_query("users", $query);
$CookieString=$FirstName.'&'.$LastName.'&'.$email.'&'.$count;
SetCookie ("Example",$CookieString, time()+3600);
echo "Thank you for registering.
";
}

} else { echo "Sorry, some information is missing. Please go back and add all
the information"; }
?>

Kişinin bilgileri veri tabanına MySQL ile yazılıyor. Cookie ilk kez oluşturulup karşı makineye
yazılıyor.

 


413 Kere okundu

Bu makaleyi beyendinizmi ?

1 2 3 4 5 Rating: 4.00Rating: 4.00Rating: 4.00Rating: 4.00 (Toplam 4 Oylar)
comment Yanıtlar (0 Gönder)
Çok okunanlar
En Çok Yorumlananlar
Yazarlar