Php ile Oturum Yönetimi (SESSION)

Türkçesi oturum anlamına gelen session bilgilerin saklanması için kullanılan mantıksal bir nesnedir.Session oturum yönetimini kullanarak şifreli sayfalar oluşturarak ve bu sayfaları belirlediğiniz kullanıcıların görmesini sağlayabilirsiniz.

Ayrıca session kullanarak sitemize giren her ziyaretçiye atanan id ile kişiye özel bir alışveriş sepeti yapabiliriz.

Ziyaretçiye otomatik olarak bir id atandığında sepete eklediği her ürün sepette gözükür.Sepetteki ürünleri satın al dediğinde üyelik sayfasına yönlendirilir ve üye olduğunda sepette saklanan ürünlerin ödemesi yapılır.Genel mantık bu şekildedir.

Session oturum yönetimini kullandığımız sayfaların en başına:

session_start();

fonksiyonunu kullanmamız gereklidir.Neden gereklidir derseniz bu fonksiyon olmadan oturumu yönetemessiniz.

Örneğin bir üyelik sayfamız var ve üyelik sayfamıza giriş yapacağız.İlk önce ayar.php dosyamızı oluşturup içine kullanıcı adımızı ve şifremizi tanımlıyoruz.

<?php

$user = "admin";

$pass = "admin";

?>

Daha sonra index.php sayfamızı oluşturup giriş formumuzu yapıyoruz.

<form action="login.php" method="POST">

<table align="center">
<tr>
<td>Kullanıcı Adı</td>
<td>:</td>
<td><input type="text" name="user"></td>
</tr>

<tr>
<td>Şifre</td>
<td>:</td>
<td><input type="password" name="pass"></td>
</tr>

<tr>
<td></td>
<td></td>
<td><input type="submit" value="Giriş"></td>
</tr>

</table>

</form>

Burada kullanıcı adı ve şifremizi girmemiz gereken iki form kutucuğu oluşturduk.Ve giriş butonuna bastığımızda bizi login.php sayfasına yönlendirecek ve orada kullanıcı adımızın ve şifremizin doğru olup olmadığını kontrol edecek.Şimdi login.php sayfamızı oluşturuyoruz.

<?php

// ayar.php dosyamızı include ediyoruz ve session_start(); fonksiyonumuzu çalıştırıyoruz.

include("ayar.php");

session_start();
ob_start();

//formdan gelen bilgileri çekip ayar.php dosyamızdaki bilgilerle doğru olup olmadığını kontrol ediyoruz.


if(($_POST["user"]==$user) and ($_POST["pass"]==$pass)){

//eğer bilgiler doğruysa login ismi verdiğimiz session kaydını yapıyoruz.ve session kaydını kullanıcı adıyla şifremize eşitliyoruz.

$_SESSION["login"] = "true";
$_SESSION["user"] = $user;
$_SESSION["pass"] = $pass;

header("Location:admin.php");

}else{

//diğer durumda hata mesajı verip giriş sayfamıza yönlendiriyoruz.

echo "Kullanıcı adı veya Şifre Yanlış.";

header("Refresh: 2; url=index.php");

}

ob_end_flush();

?>

Not: ob_start() fonksiyonu kafanızı karıştırmasın o fonksiyonu header() fonksiyonunu çalıştırmak için kullandık.

Şimdi admin.php sayfamızı oluşturuyoruz.

<?php

include("ayar.php");
session_start();

//eğer login session kaydı yapılmadan yani giriş yapmadan admin.php sayfamıza erişmek isterlerse buna engel oluyoruz.

if(!isset($_SESSION["login"])){

echo "Bu sayfayı görüntüleme yetkiniz yoktur.";

}else{

echo "Admin sayfası<br>";
echo "<a href=\"logout.php\">Çıkış Yap</a>";

}

?>

Şimdi logout.php sayfasıyla session kaydını silip siteden çıkış yapacağız.Bunun için session_destroy(); fonksiyonunu kullanacağız.

<?php

session_start();

ob_start();

session_destroy();

echo "Çıkış Yaptınız.Ana Sayfaya Yönlendiriliyorsunuz";

header("Refresh: 2; url=index.php");

?>

Yaptığımız örnek ile umarım session kullanımını anlamışsınızdır.

Uygulama dosyasını http://www.guraysuerdem.com/dosya/session.rar adresinden indirebilirsiniz.

85 thoughts on “Php ile Oturum Yönetimi (SESSION)


  1. Elinize kolunuza sağlık. Paylaşımlar için teşekkürü bir borç bildim.


  2. Selam Gerçekten Çok güzel.Temel bir uygulama.Ben kendim bir sistem geliştirmek istiyorum.Bununla ilgili bu kodları kullanarak bir anlatım yapmanız mümkün mü?


  3. Galiba tam olarak anlamadım. Ama az kaldı diyebilirim. 3. okuyuşumda kesinlikle mantığı kapacağım. 🙂

    Çok Teşekkürler.


  4. Ellerinize sağlık aradığım kod bu idi. Bunu geliştirip siteme uyarlıyacam.

    Çok Teşekkürler…


  5. Çok Güzel Bir Anlatım ve Çalışıyor. Hiç Hata yok. Çok Teşekkür ederim. Çok faydalı oldu…


  6. Merhaba Güray Herşeyi Güzel Anlatmıssın Öncelikle Tşk ederim Ufak Bir Şey Soracağım Örnegin Ben Misafir Girişli Bir Chat Sayfası Hazırlıyorum. Ziyaretcilerin Session Ayarlarını Yaptım Yanlız Ben Oturumun Sadece Bir Defa Açılmasını İstiyorum Örnegin username: (mehmet ali) giriş yaptı ve oturuma yüklendi (mehmet ali) halen oturumdayken başka bir bilgisayardan (mehmet ali) nickiyle girişi engellemek istiyorum. yani her nickle bir defa girilsin alper girdi tekrar başka bilgisayardan alper girişini engellemek yani istiyorum. bu konuda biraz aydınlatırmısınız. bir çok forumda örneklere baktım ama istedigim kodu bulamadım. Tekrar Tşkler.


  7. Dediğin işlemi şu şekilde yapabilirsin.
    Veritabanında örneğin uye tablosuna durum alanı eklersin default 0 olarak yaparsın.Kullanıcı giriş kontrol sayfasında durum alanına sorgu gönderip eğer 0 ise giriş yap ve durumu 1’e eşitle sessionu kaydet ve panel sayfasına yönlendir.Bu şekilde durum=1 olarak oturum açılır.Çıkış yaparkende durumu 0’a tekrar eşitlersin.
    Oturum açıkken giriştede aynı şekilde durum 1 ise zaten giriş yaptınız gibi bir uyarı ver.


  8. sesion u anladım çok teşekür ederim ama konuyla alaksı olmasada Header(“”); ve ob_start(); ne işe yarıyor anlamadım.


  9. Gerçekten de anlaşılır ve öğretici bir anlatım.
    Çok teşekkürler..


  10. Güray arkadaş çok babacan birşekilde anlatmış.helal olsun.Eminim bundan epey kişi yararlanmıştır.
    eyvallah


  11. Bu siteyi yeni keşfettim. Konuları hep en yalın ve anlaşılır bir şekilde ele almışsınız. Paylaşımınız için sizlere çok teşekkür ediyorum.


  12. arkadaslar proje hazırlıyorum.uye giris formunu hazırladım uye giris yaparak sayfasına gidiyor ama profil sayfasında kullanıcıya ait bilgileri nasıl gosterebilirm(giris yapan uye ye ait bilgileri)
    lutfen yardımcı olun cok acil.projem


  13. sesion kapatma olayı cok işime yaradı emegi gecenlere cok tsk ederim


  14. Merhabalar… Öncelikle anlatımınız ortalama php bilgisi olanlar için gayet net ve anlaşılır ve de faydalı bir anlatım olmuş. Bunun için teşekkür ederim. Ayrıca bu oturum konusunda, sitemde yaptığım oturum yönetimlerinin olduğu sayfalar daha önce çok güzel çalışırken bildiğiniz gibi php5.x sonrası kodlarda nesne yönelimli programlamaya dönük değişiklikler oldu ve depracate hataları aldım bol bol 🙂 dolayısıyla sayfalarda değişiklik yaparken oturumlarda session_is_registered() ve benzeri fonksiyonların kalkmasıyla arayışa girdim ve yerine sizin verdiğiniz kodları da biraz düzenleyerek ekledim ve sorunlarımı çözdüm. Bunun için ayrıca teşekkürler. Fakat webi altüst etsem de birçok kişinin bu yeni değişikliklerle ilgili bir makalesini göremedim. Sadece şunun yerine şunu kullanın gibisinden kısa ve pek açıklayıcı olmayan makaleler yer almaktadır. Anlatımınızın açık ve anlaşılır olmasından ötürü sizden ricam php5.x ki özellikle 5.3.0 sonrası yapılan değişikliklerle ilgili örnekler yayınlamanız. Örneğin ; eregi() yerine preg_match() ya da benzeri preg_… fonksiyonların kullanımı geçerli artık …Ama bunlarla ilgili türkçe açık güzel bir anlatım söz konusu değil. umarım vakit bulup faydalı çalışmalarınızla bizleri bilgilendirebilirsiniz… Teşekkürler,kolay gelsin,iyi çalışmalar…


  15. Warning: Unknown: open(/tmp\sess_deb7096ac0c194a862ece2eb64a6b6e5, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

    Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

    index.php sayfasında session lar ile ilgli böyle bir hata verdi……………NEDENİ nedir nasıl düzelteiblirim lütfen yardımcı olurmusunuz…..


  16. Warning: Unknown: open(/tmp\sess_deb7096ac0c194a862ece2eb64a6b6e5, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

    Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

    index.php sayfasında session lar ile ilgli böyle bir hata verdi……………NEDENİ nedir nasıl düzelteiblirim lütfen yardımcı olurmusunuz…..


  17. şimdiye kadar session ile ilgili bulduğum en güzel kaynak 🙂 teşekkürler


  18. harika anlatmışsınız elinize sağlık işime de yaradı hiç hata vermeden çalıştı süpersiniz 🙂


  19. Çok güzel hazırlamışsınız anlatımlarınızı harfiyen uyguladım. Hiçbir farklılık yok ancak login.php sayfasında if satırında hata alıyorum. kulanıcı adı ve şifreyi doğru giriyorum ama o satırda hata veriyor.
    ( ! ) Notice: Undefined index: pass in C:\wamp\www\dersler\login.php on line 8

    if blogum şu şekil bir hata bulamadım ben ama birde siz bakın :S
    if(($_POST[“user”]==$user)and($_POST[“pass”]==$pass))


  20. Hocam ellerinize sağlık yeni bir başlangıç için çok güzel bir anlatım ama bir sorum olacak benim birden fazla kullanıcı yapmak istiyorum mesela kullanıcı girdiğinde sadece görebilsin yönetici girdiğinde ise değişik yapabilsin eklemeler falan bunu nasıl yapabilirim hocam yardımcı olur musunuz hocam,
    şimdiden teşekkürler


  21. Session’ıda sizden öğrendik, hayde bakalım.. Aradığım şeyler blog’unuzda var sanırım.. Şimdi bir göz gezdireceğim..

    İyi çalışmalar..


  22. admin ben oturumun ismini unuttum model e yanlış girdi kardeşim nasıl düzelebilir nerden bulabilirim oturumun ismini ne olur yarcım lazım


  23. Birşey sorucam php 5.3 ve üzeri serverlerde bu degişken de bir düzeltme yapıldı sanırım son sürüme göre örnek verebilseniz cok iyi olur

    Warning: Cannot modify header information – headers already sent by
    bu tarz hatalar alıyorum ..

    Birde utf-8 bomsuz kullanmak lazım yoksa gene hata verebiliyor 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir