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.
Elinize kolunuza sağlık. Paylaşımlar için teşekkürü bir borç bildim.
Ben teşekkür ederim.
teşekkürler.
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ü?
bende paylasılan bilgiler icin tesekkuru borc bilenlerdenim
Vallahi Hocam Cok Güzel Olms Ellerine Saglık
Galiba tam olarak anlamadım. Ama az kaldı diyebilirim. 3. okuyuşumda kesinlikle mantığı kapacağım. 🙂
Çok Teşekkürler.
Süper Sağol
olay bu be.hocam harika
Ellerinize sağlık aradığım kod bu idi. Bunu geliştirip siteme uyarlıyacam.
Çok Teşekkürler…
Çok Güzel Bir Anlatım ve Çalışıyor. Hiç Hata yok. Çok Teşekkür ederim. Çok faydalı oldu…
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.
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.
ya tek kelimeyle süpersiniz… Daha yeni anladım session u:)
çok güzel anlatmışsınız hocam elinize sağlık.
ellerine sağlık kardeşim.
tek kelime ile mükemmel bir anlatımdı..
sesion u anladım çok teşekür ederim ama konuyla alaksı olmasada Header(“”); ve ob_start(); ne işe yarıyor anlamadım.
Gerçekten de anlaşılır ve öğretici bir anlatım.
Çok teşekkürler..
Güray arkadaş çok babacan birşekilde anlatmış.helal olsun.Eminim bundan epey kişi yararlanmıştır.
eyvallah
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.
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
sesion kapatma olayı cok işime yaradı emegi gecenlere cok tsk ederim
elinize saglık kardes ii çalısma olmus çalısmalarının devamını dilerim
Gayet başarılı bir anlatım, emeğinize çok teşekkürler…
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…
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…..
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…..
Teşekkürler kaliteli anlatımınız için.
şimdiye kadar session ile ilgili bulduğum en güzel kaynak 🙂 teşekkürler
Session oturumu o sitenin url adresinden nasıl açabiliriz.
emeğine sağlık gardaş çok güzel olmus, yanlız $user ve $pass ı veritabanından çekseydin tam olurdu.
gayet basit ve güzel biçimde açıklamışsınız.elinize sağlık
çok teşekkurler emeğiniz için
harika anlatmışsınız elinize sağlık işime de yaradı hiç hata vermeden çalıştı süpersiniz 🙂
echo “Çıkış Yap“; dediğimde hata veriyor
Hatayı buraya yazabilirseniz ona göre yardımcı olmaya çalışacağım.
Makaleniz büyük fayda sağladı. Teşekkürler
Ç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))
Öz bilgi içiren bu değerli makale için çok teşekkür ederim.
Gayet net anlatmışsınız.
Saygılar,
Reyhan YILMAZ.
Ellerine sağlık hocam. Bu güzel bilgiler ve sade anlatım için teşekkürler 🙂 Saygılar.
session_start(); hatası alıyorum sürekli
nasıl düzeltebilirim.Şimdiden tskrlr
Teşekkürler paylaşım için.
Bundan daha açıklayıcı ve basit anlatılamazdı, tebrikler…
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
gercekten guzel bır paylasım tesekkurler
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..
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
Elinize sağlık hocam teşekkür ederim güzel anlatımınız için.
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 🙂