Daha önce cookie lerden bahsetmiştik. Cookieler kişisel bilgisayarlarda kullanılıyordu. Bu güvenlik nedeniyle bazı işlemlerde kullanılmayabilir. Bunun için daha güvenli ve suncu tarafından kullanıcının takibi için kullanılan session yani oturu yönetimi işlemlerine göz atacağız. php de session nasıl oluşturulur ve nasıl silinir. cookielerle arasındaki farkları bu yazımızda olacak

$_SESSION global dizisini kullanacağız.
Çerezlerle arasındaki en temel farklardan biri Çerezlerin son kullanma tarihini biz belirlerken sessionlar tarayıcının kapatılmasıyla silinir. Yani siteye girildiğinde oluşturacağımız sessionlar, girenin sayfayı kapatmasıyla silinecektir. Çerezlerde ise belirttiğimiz zamanda içerisinde sayfa kapatılmış olsada devam ediyordu.

Kullanım, oluşturma ve silme dışındaki asıl teknik farkı da sessionların tarayıcıya direkt olarak tanımlanmıyor olması.

Session ve cookie arasındaki diğer farklar

bir çerez tanımladığımızda bu çerezin adı ve değeri tarayıcıya açıkca gönderilir ve bu değer istenilen süre boyunca tarayıcıda açık bir şekilde saklanır.

Sessionda ise kaydedilen değer ve değerin adı tarayıcıya gönderilmez. Onun yerine PHPSESSID adında içinde uzun bir session id değeri bulunan bir çerez tanımlanır. Ve bizim oluşturduğumuz sessionlar sunucuda saklanır ve girenlerin gönderdiği PHPSESSID kimliğine göre kime ait oldukları bulunur ve yeniden düzenlenir.

kredi kartıBu olayı daha iyi anlamanız için kredi kartı örneğini vereyim: Session olayı aynı kredi kartı kullanımı gibidir. Banka size bir kart verir bu kartın içinde size özel bir anahtar kod yer alır. Ama para ve bilgiler bankada saklanır.

Siz bilgilerinize ve paralarınıza ulaşmak için kartı kullanırsınız. Sessionda size direkt olarak bilgileri vermek yerine bir PHPSESSID adında değer verir ve o değer üzerinden size ait olan verileri okur ve düzenler.
Session nerelerde kullanılabilir

Oturumun kapanmasıyla silinmesi ve tekniği nedeniyle session verileri daha çok kullanıcılarınızın sitenize giriş yaptığında onları tarayıcıyı kapatana kadar giriş yapmış şekilde tutmanıza ve bazı yerlerde sanal sepet uygulamarını gerçekleştirmenizde kullanılır.
Session oluşturma

Başta da dediğim gibi sessionları tek bir $_SESSION global dizisi üzerinden okuyup, oluşturup, silebiliyoruz. Tek önemli mevzu session kullanımına ya da oluşturulmasına başlamadan önce bir kere her sayfanın en başında session_start() fonksiyonunu yazmalıyız, bu fonksiyon session olayını kullanıma hazırlar ve olmazsa olmazdır.

Bazı sunucularda session kullanımı otomatik olarak hep açıktır, açık olan sunucularda session_start() yazmaya çalışırsanız hata verir. Bu durumda bu fonksiyonu kullanmaya gerek yoktur.
[code]
session_start();
$_SESSION[‘mesaj’] = ‘Okubil merhaba!’;
[/code]

Session dizi (array) atama
[code]
session_start();
$_SESSION[‘mesajlar’] = array(‘Selam’, ‘Merhaba’, ‘Hoşgeldiniz’);
[/code]

Session silme

Session silme işlemlerinde yine değişken değerini boşaltmak için kullanılan unset() fonksiyonunu kullanıyoruz.
[code]
<?php
session_start();
$_SESSION[‘site’] = ‘okubil’;
unset($_SESSION[‘site’]);
?>
[/code]

Tüm sessionları silmek
Birden fazla session tanımlamışsanız ve tümünü silmek isterseniz
session_destroy() fonksiyonunu kullanacağız. Bu fonksiyon tanımlanmış tüm sessionları yok eder.
[code]
<?php
session_start();
session_destroy();
?>
[/code]

Session var mı diye kontrol etmek

Yine diğer çalışmalarda varlığını kontrol etmekte kullandığımız isset() fonksiyonunu kullanacağız. Bu fonksiyon eğer içine yazdığımız session varsa olumlu yoksa olumsuz döner.
[code]
<?php
session_start();
echo isset($_SESSION[‘site’]);
?>
[/code]

Örnek
session.php
[code]

<?php
session_start();
$_SESSION[‘site’] = ‘okubil’;
echo ‘Sessionumuzu oluşturduk. <a href="sessionacik.php">session gör</a>’;
?>

[/code]

sessionacik.php
[code]
<?php
session_start();

echo ‘session okunuyor : ‘ . $_SESSION[‘site’];
echo ‘<br><a href="sessionvarmi.php">session varmı</a>’;
?>
[/code]

sessionvarmi.php
[code]
<?php
session_start();
echo isset($_SESSION[‘site’]);
echo "<br>";

if(isset($_SESSION[‘site’])==1){
echo ‘Session var <br><a href="sessionkapat.php">session kapat</a>’;
}else{
echo ‘Session yok’;
}
?>
[/code]

sessionkapat.php
[code]
<?php
session_start();
session_destroy();
echo "tüm sessionlar kapandı";
echo ‘Session kontrol <br><a href="sessionvarmi.php">session varmı</a>’;

?>
[/code]

http://www.phpr.org/php-session-oturum-yonetimi/ adsinden alıntılar yapılmıştır.

php