PHP ile Oturum Yönetimi
Oturum yönetimini genelde ziyaretçi siteye geldiğinde ona bir kimlik atayıp yaptığı işlemlerin kontrol edildiği bir sistem olarak görebiliriz. Online shop sistemlerinde şipariş esnasına kadar olan işlemlerden tutunda üyelik sistemini kullanan bir siteye kadar kullanılabilir. Ziyaretçi sitede sayfalar arasında dolaşırken 3 şekilde takip edilir. Birincisi kullanıcıya rasgele bir değer verip url hanesinden iletimi yani "index.php?ziyaretci=gdfg8787df7gdf" gibi olabilir. İkinci olarak session (oturum) atanabilir. Bu sayede kullanıcı siteye geldiğinde ona birnevi kimlik numarası atanır ve bunu istediğimizde değiştirebiliriz. Üçüncüsü ise cookie (kuki) kullanmaktır. ziyaretçinin bilgisayarına browser yoluyla kuki dosyayı atarak işlemlerimizde bu dosyayı okuyarak kullanıcıyı tanıyabiliriz.
Session
http://www.php.net adresinden en son sürüm php binary dosyası PHP V4.0.6 kullandığımızı varsayıyorum. Session ve bazı özellikler bazı php kaynak dosyasının derlenmesinde es geçilmiş olabilir. Öncelikle işlemlerimize başlamadan önce php.ini dosyasını açalım ve "session.save_path = /tmp" değişkeni bu şekilde tanımlanmışsa windows işletim sistemi kullanıyorsak session dosyalarının yazılması için c:\tmp dizini oluşturmamız yeterli. şimdi basit bir örnek yapalım
--------------------------------------------------------------------------------
<?php
//session başlatalım
session_start();
//session değişkeni kaydedelim
session_register('sayac');
//session değişkeni olan sayac ın değerini artıralım
$sayac++;
echo("bu sayfayı $sayac. ziyaretiniz");
?>
--------------------------------------------------------------------------------
Bu sekliyle bir session sayacı yapmış olduk. session_start() ile , istemci taraf için, yok ise bir session ID oluşturarak cookie olarak atanır. Bu session ID in degeri script içinde $PHPSESSID değişkeninin değeridir. session_register() fonksiyonu ile session değikeni üretir. Session değişkeni olup olmadığını kontrolü session_is_registered() fonksiyonuyla yapılır ve örneğimizdede olduğu gibi $sayac session değişkeni ürettik ve browres her açılışında bir artırdık bu değişkenin değerini istediğimiz gibi değiştirebiliriz. session_unset() fonksiyonuyla herhangi bir session değişkenini bitirebiliriz ve bu tur değişkenler çok ise hepsini bitirmek için session_destroy() fonksiyonu çağrılır. ikinci örneğimize geçelim.
--------------------------------------------------------------------------------
<?php
session_start();
//az önceki scriptimizden kalan sayac kalmışmı bakalım
if(session_is_registered(sayac))
{
echo "sayac ile tanımlı session var";
}
else
{
echo "sayac ile tanımlı session yok";
//bizde tekrar oluşturalım
session_register(sayac);
}
//mesaj session değişkeni
session_register('mesaj');
$mesaj="Merhaba Dünya";
$sayac++;
echo("<br> $mesaj <br> $sayac <br>");
//session ID değerini url yoluylada iletebilirsiniz
?>
<a href="<?echo$PHP_SELF?>?PHPSESSID=<?echo$PHPSESSID?>">Devam</a>
--------------------------------------------------------------------------------
Session kullanımlarıyla ilgi olarak örneklerinizi çoğaltabilirsiniz. Ayrıca daha bir çok session fonksiyonları ve kullanım şekillerde var. bunun için Php manual fonksiyon listesine ve yorumlara bakabilirsiniz.http://www.php.net/manual/en/
Cookies
Cookies, sunucu tarafından gönderilen bilgilerin browser aracılıyla kullanıcı bilgisayarında cookie'ler için ayrılmış bir dosyaya yazdırmakla olur. Cookie kullanarak sitemizde üyelik sistemide oluşturabiliriz önemli olan kullanıcının bilgisayarına herhangi bir rasgele değer üretip yollamak ve bu değeri örneğin databasenize yazarak güvenli bir bağ kurabilirsiniz. Böylece kullanıcının parola gibi gizli bilgileri cookie olarak atmamş olursunuz. PHP, cookie işlemleri için setcookie() fonksiyonunu kullanır. Bu fonksiyon 6 adet parametre kullanır.
setcookie (cookie_ismi, değer, bitimi, yol, alan, güvenlik)
Buradaki paremetreler: cookie_ismi -> cookie tanımladığımız isim, deger -> cookie değeri, bitimi -> cookienin geçerlilik süresi hiç yazmazsanız browser kapanana kadar, yol -> '/' olarak girersek bütün site, alan -> örnek '.duzgun.com' , güvenlik -> '1' sadece güvenli iletişimlerde cookie kullan yada '0' ise her zaman kullanabilirsin. şimdi cookie kullanımını kapsayacak bir örnek yapalım.
--------------------------------------------------------------------------------
<?php
//oluşturulacak cookie adını girelim
$cookie_adi = "id";
//rasgele sayı üretecini harekete geçir
srand((double)microtime()*1000000);
$deger = rand();
//$deger = md5 (uniqid (rand()));
//cookieyi gönder
setcookie($cookie_adi,$deger,time()+14400,'/');
//$HTTP_COOKIE_VARS[$cookie_adi] ile cookie'yi oku
echo $cookie_adi."<br>".$HTTP_COOKIE_VARS[$cookie_adi];
?>
--------------------------------------------------------------------------------
Bu tür örnekleri kendiniz çoğaltabilirsiniz.