1. Çerezler nedir, Nasıl Kullanılır.
2. Çerezlerin kullanımı.
3. PHP'de Oturum Yönetimi ( Session )
4. Oturum Yönetimi ( Session ) Kullanımı.


1. Çerezler nedir, Nasıl Kullanılır.

Çerez nedir. Çoğu yerde karşımıza çıkmıştır bu terim. Özellikle Anket formlarında ve üyelik sistemlerinde kullanılan bu terim hakkında üstünkörüde olsa bi bilgiye sahibiz. Önce Çerezleri ( Cookies ) tam olarak tanıyalım, işlevlerini benimseyelim.

Çerezler, Web sayfasın ile bilgisayarımız arasındaki referansımızdır. Daha önce girdiğimiz bir web sayfasına girişlerimiz çerezler sayesinde otomize edilebilir. Yani daha sonra aynı sayfaya girmemiz halinde girdiğimiz sayfa bizi tanır, bize kimi referans bilgileri verir, sayfayı daha sonra ziyaret ettiğimizde bu referans bilgileri web sayfasına otomatik olarak iletilir.

Çerezler hangi sistemlerde kullanılır. Esas olarak çerezler iki sistemde kullanılır. Bunlardan biri Anket formları, diğeri ise üyelik sistemleridir. Anket formlarında oy kullanmamız halinde sistemimize bir çerez atılır, daha sonra bu forma tekrar oy kullanır isek geçersiz sayılır. Üyelik sistemlerindede çerezler bizi şu şekilde tanır. Sayfaya girişin bir kullanıcı adı ve şifre ile mümkün olduğunu varsayalım. Sayfaya üye olduktan sonra kullanıcı adımızı ve şifremizi gireriz. Daha sonra bu web sayfasına girmek istediğimizde sistemimize atılan çerez ile web sayfası arasında otomasyon kurulur, şifreyi tekrar girmemize gerek kalmaz. Aslında çerezler daha pek çok işlemde kullanılır. Anket formları ve Üyelik sistemleri en sık çerez kullanılan sistemler olduğu için bunları örnek verdik.

Peki çerezler nekadar güvenlidir ? Aslında hiç güvenli değildir. Bu çerezlerin içeriği şifrelenmez. Birebir işletim sistemimiz altındaki "Cookies" klasörü altına atılır. Çerez dosyasının içeriğine bakmak istediğimiz zaman referans bilgileri karşımıza çıkacaktır. Haliyle Bu bilgiler bilgisayarımızın diğer kullanıcılarınada açıktır.

Çerezleri yeterince tanıdık. PHP çerez işlemleri için salt prosedürler işletir. Şimdi bu prosedürleri tanıyalım ve örnek işlemlerle öğrenmeye başlayalım.


2. Çerezlerin kullanımı.

Çerezler, yukarıda da bahsettiğimiz üzere web sayfası ile ziyaretçi arasındaki referans bilgisidir. PHP ile bu referans bilgisini ziyaretçinin sistemine nasıl işleteceğimizi görelim.

<?
setcookie ( "referans1", "123", time()+3600 ) ;
?>

Yukarıdaki örnekte php sayfamızı çalıştıran ziyaretçinin sistemine bir çerez değeri girdik. Bu çerez değerleri "referans1" ve "123" değerlerini içerek iki adet referans bilgisi işletecektir. Çerezimizin yaşama süresinide time()+3600 değerini girerek 3600 saniye yani 1 Saat olarak belirledik.

Şimdi sisteme yüklenen bu çerez ile aynı ziyaretçiyi sayfaya birdahaki girişinde tanısın.

<?
if ( $HTTP_COOKIE_VARS['referans1']=="123") {
echo "referans değeriniz 123 dür"; ] else { echo "Çerez yüklü değil" };
?>

Şimdi yukarıdaki kodları çalıştırdığımızda sistemimizde çerez var ise bize "referans değeriniz 123 dür" yazacaktır. Eğer ilk örnekteki kodları çalıştırmasa idik "Çerez yüklü değil" metni ile karşılaşacaktık.

Şimdi birde şöyle bir örnek yapalım. Web sayfamıza giren kullanıcıların sayfaya daha önce kaç kere girdiğini sayalım ve kullanıcıya bunu rapor edelim.

<?
$tampon=$_REQUEST['giris'];
echo "$tampon<br>";
setcookie ( "giris", "2", time()+3600 );
if ( $tampon > "0" ) {
echo "Sayfaya daha önce $tampon kere girdiniz.";
$tampon++;
setcookie ( "giris", $tampon, time()+3600 );
} else {
echo "Sayfaya ilk girişiniz..";
setcookie ("giris","1",time()+3600);
};
?>

Yukarıdaki komutlar sayfaya girişlerimizi sayacaktır. Sayfaya ilk girişimizde "Sayfaya ilk girişiniz.." ibaresi ile karşılaşacağız. Daha sonraki girişlerimizde sayfaya kaç kere girmiğimizi gösterecektir. Burada dikkat etmemiz gereken husus, "$_REQUEST" birimini kullandığımız. Herzaman $HTTP_COOKIE_VARS deyimini kullanmayabiliriz. Çerez değerini alırken $_REQUEST metodunuda kullanabiliriz.

Şimdi son bir örnek daha yapıp çerezlerin kodlanmasını tamamlayalım.

Şimdiki örnekte bir kullanıcı adı ve şifre sınayacağız.

<?
setcookie ($kullanici,$sifre,time()+3600);
echo "Kayıt Yapıldı";
?>

Yukardaki kodları çalıştırıp sayfamızı "?kullanici=sedat&sifre=123" şeklinde çalıştıralım. "sedat" yazan yere kendi ismimizi, "123" yazan yerede herhangi bir numara yazabiliriz. Bu bilgilerin üye giriş sayfalarındaki girişlerden biri olduğunu varsayalım. Sistemimize bir çerez atılacak ve bu çerez bizi sayfaya birdahaki girişimzed bizi tanımasını sağlıycaz.

<?
if ( $_REQUEST[$kullanici]==$sifre ) { echo "Şifreli Alandasınız"; } else {
echo "Şifreyi yanlış girdiniz.."; }
?>

Şimdi yukarıdaki kodları "?kullanici=sedat&sifre=123" şeklinde çalıştıralım. İlk çerezde girdiğimiz değerlerle son girdiğimiz değer aynı ise bizi şifreli alana atayacaktır.

Özellikle üyelik sayfalarında kullanılan çerezler, bu tarz sistemlerde de yukarıdaki şekilde çalışır. Hemen her üyelik sisteminde bizi daha sonraki girişlerde tanısınmı seçeneği vardır. Bu işareti seçer isek ilgili sistem, bizim çerez sürelemizi maksimum uzunlukta tutar. Sayfaya girişimizde çerezdeki Kullanıcı adı ve Şifre bilgisini veritabanıyla karşılaştırır, uyuşuyor ise bizi şifreli alana atar. Eğer çerezimizi siler isek bu sınamayı yapmayacak, bize kullanıcı adı ve şifremizi girmemizi isteyecektir. Veritabanı ile ilgili uygulama konu dışında olduğu için konu ile ilgili dökümanı okuyarak örnek uygulamalar geliştirebilirsiniz.


3. PHP'de Oturum Yönetimi ( Session )

Oturum Yönetimi ( Session ) PHP'de çok sık kullanılan prosedürlerden biridir. Session'lar ziyaretçi ile web sayfası arasında oluşturulan, ziyaretçinin sayfalar arasında gezinirken bir sayfadan diğer sayfaya taşıdığı değerleri ihtiva eden işlem dizisidir. Aslında çerezler ile kıyasladığımızda oldukça benzer yanları vardır. Şöyle düşünelim, Ziyaretçi kullanıcı adı ve şifresini girdikten sonra şifreli bir alana geçer. Sayfa içerisindeki link'lerden birine tıkladığı zaman sayfa değişecektir. Açılan bu yeni sayfada şifre korumalıdır, kullanıcı bir önceki sayfaya şifre ile girmiştir ancak bu sınama önceki sayfada gerçekleşmiştir. Yeni açılan sayfadada bi sınamaya ihtiyaç duyar. Yani ziyaretçinin izni yeniden kontrol edilmelidir. Bunun için ziyaretçinin kullandığı şifre bu sayfaya bir şekilde aktarılmalıdır. Çerezler bu işlem için kullanılabilir, ancak bu güvenli bir yöntem değildir. Çünki çerezler sayfa kapatıldığı zaman silinmezler, sistemde muhafaza edilmeye devam edilir. Güvenlik sorunu nedeniyle çerezler bu işlem için ideal değildir. Onun için diğer alternatifleri değerlendirmemiz uygun olacaktır. Bir diğer alternatifimizde bu kullanıcı adı ve şifre bilgisini adres çubuğu vasıtası ile sayfadan sayfaya taşımaktır, ki bu işlemde güvenli sayılmaz, çünki ilgili şifre adres çubuğunda bil fiil görünür. Bununla birlikte sayfa içerisindeki kodlamayı daha karmaşık hale getirir.

Oturum Yönetimi Prosedürü Session'lar burada devreye girer. Sayfalar arasında veri akışını sağlar. İlgili kullanıcı adı ve şifre bir sayfadan diğer sayfaya taşınarak kullanıcının tekrar tekrar şifre girmesine gerek kalmaz. Bu oturum denetimi web penceresini kapatana kadar devam edecektir.

Kısaca özetlersek, Session'lar bize sayfalar arasında verilerin taşınmasına olanak sağlar. Bu veriler herzaman üyelik sayfalarındaki kullanıcı adı ve şifreler olmayabilir. Üyelik sistemleri Session'ların kullanıldığı en yaygın sistemlerdir.


4. Oturum Yönetimi ( Session ) Kullanımı.

Session olgusunu tanıdıktan sonra oturum denetimi prosedürünü kodlamaya başlayabiliriz. Session değerlerinin oluşturulması ve taşınması için kullanacağımız en temel fonksiyonlar aşağıdaki gibidir.

session_start();
session_register();

Oturum denetimi ile ilgili veri akışları ve bu akışların kodlanması yukarıdaki temel fonksiyonlar ile sağlanır. Şimdi örnek bir işlem yapalım ve bir değeri Session'a alalım.

<?
$deneme="123";
session_start();
session_register(deneme);
?>

Yukarıdaki işlem ile ziyaretçi ile sayfamız arasında bir oturum açtık ve oturum değeri olarak "123" verdik. Bu değer, sayfalar arasındaki geçişlerde diğer sayfalara da aktarılabilir hale gelmiştir artık. Bu değeri bir şifre olarak kabul eder isek ziyaretçi sayfadan sayfaya geçerken şifresini tekrar tekrar girmek zorunda kalmayacak, aynı zamanda sisteminde bir çerezde yüklememiş olacak.

Şimdi bu örneği niteliklendirelim. Kullanıcı şifresini girsin. Ziyaretçi Diğer sayfaya geçtiğinde kullanıcının şifresinin diğer sayfaya aktardığına pratik yaparak şahit olalım.

---- giris.php -----
<?
$deger=$sifre;
session_start();
session_register(deger);
?>

<a href='icerik.php'>Tıklayalım</a>
?>


--- icerik.php ----
<?
session_start();
session_register("deger");
echo $_SESSION[deger];
?>

Şimdi yukarıdaki işlemleri uygulayalım. İlk kodu giris.php olarak kaydedelim. İkinci koduda açıklamadaki şekilde icerik.php olarak kaydedelim. Şimdi Adres çubuğuna "giris.php?sifre=123" yazarak şifremizi sisteme girelim. Alttaki "Tıklayalım" linkine tıkladığımızda bizi icerik.php' sayfasına yönlendirecektir. icerik.php açılınca bize giris.php'de girdiğimiz şifremizi gösterecek. Dikkat edelim ; biz şifremizi giris.php'ye girdik. giris.php bize bi oturum açarak şifremizi "deger" imiyle kaydetti ve diğer sayfa olan icerik.php'ye taşıdı.

Burada bir noktaya daha dikkat edelim. Oturum içerisinde akan verileri "$_SESSION" değişkeni ile alabiliriz. Bu değişkende sert parantezler içerisine yazacağımız oturum değeri [deger] bize oturumdaki veriyi iletecektir. Üyelik sayfalarında da bu yöntem kullanılarak sayfalar arasındaki geçişlerde şifremiz sayfadan sayfaya güvenli bi şekilde taşınır.

Biz yukarıdaki örneklerde oturum değerine tek bir değer yükledik ve sayfadan sayfaya taşıdık. Oturum yönetimi prosedürünü uygularken birden çok değeri kaydedebiliriz. Yukarıdaki örneği Kullanıcı Adı ve Şifre olarak iki ayrı değer ile kaydedelim.

---- giris.php -----
<?
$ver1=$kullaniciadi;
$ver2="$sifre";
session_start();
session_register(ver1);
session_register(ver2);
?>

<a href='iki.php'>Tıklayalım</a>


--- icerik.php ----
<?
session_start();
session_register("ver1");
session_register("ver2");

if ($_SESSION[ver1] == "SEDAT" and $_SESSION[ver2]=="123"){
echo "Giriş Yapıldı..";
}else{
echo "Giriş Başarısız";
};
?>

Yukarıdaki örnektete ilkindeki gibi sayfalar arasında veri akışı gerçekleştirdik. giris.php'yi ?kullanici=SEDAT&sifre=123" şeklinde çalıştıracak olursak bize "Giriş Yapıldı.." sonucu çıkacaktır. Yaptığımız işlemleri sırası ile açıklayalım.

Giris.php'ye iki tampon değer atadık. $ver1 ve $ver2. Bu değerlere adres çubuğundan aldığımız $kullaniciadi ve $sifre değerlerini atadık. Session_start() diyerek oturum açtık ve önce ver1 değerini Oturuma kaydettik, sonra ver2 değerini. "Tıklayın" yazan link'e tıklayarak icerik.php'ye yönlendik. Burada yine session_start(); fonksiyonunu kullanarak oturum açtık, ve session_register(); fonksiyonları ile önce ver1 değerini aldık, sonra ver2 değerini. Son işlem olarak kullanıcı adını ve şifreyi bir IF deyimi ile sınadık..

Üyelik sistemlerinde kullanılan işlemin birebir aynısını gerçekleştirdik. Tek fark, Kullanıcı Adı ve Şifre'yi veritabanından sınamayarak direkt olarak girdik.