Mehmet Fatih YILDIZ (mfyz.com)

Menü



PHP'de Oturum (Session) Yönetimi

Kategori : PHP ve Pear Dökümanları
Eklenme Tarihi :
7 Ocak Cuma ´05
oturum, session




Dikkat : Dökümanın yazılma tarihi üzerinden en az 60 gün (2 ay) geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir, uygulamada ufak sorunlar oluşabilir. Yorumları ve güncellemeleri göz önünde bulundurarak dökümanı takip ediniz.


PHP'de Oturum (Session) Yönetimi

PHP'nin olmazsa olmazı nerdeyse her php ile kodlanan sayfada bulunan oturum (session) yönetimi hakkında sizlere bilgi vereceğim. PHP'de 5 tane oturum yönetimi fonksiyonu vardır. Bu oturum yönetim fonksiyonları ve dökümantasyon bağlantıları :
session_start()
session_register()
session_is_registered()
session_unregister()
session_destroy()

Şimdi bunların anlatımına geçelim :

session_start()


Bu fonksiyonu oturumları kullanıcağımız her sayfanın başında belirtmeliyiz. Bu fonksiyon kullanıcı ilk defa giriyorsa kullanıcı için serverda bir dosya yaratır ve kullanıma hazırlar. Eğer daha önce girmişse onu kullanmaya hazırlar sadece. Her kullanıcı için uzun bir kod üretir. Bu kod sayılardan ve harflerden oluşur.


Eğer php.ini dosyasında otomatik olarak oturum başlatma seçeneği aktif değilse bu işlemi yapmak zorundayız. Oturum fonksiyonları eğer bir oturum açılmamışsa (session_start) hata verecektir. Her sayfanızın başında bu fonksiyonu çağırarak bu sorunu rahatlikla çözebilirsiniz. Öneri olarak, her sayfanızda çalıştırdığınız (include) sayfanız varsa bu sayfaya ekleyin.


session_register()


Sunucuda sizin için açılmış olan dosyaya bir değer yazar. Aynı cookie gibi işler ancak dosyalar zamana göre silinmez, kullanıcı oturumunu kapatınca silinirler. Kullanıcının oturum kapatması ise, o andaki tarayıcı programının oturumu kapatması ile olur. Çoğu tarayıcı, oturumunu tüm pencereleri kapandığı zaman kapatmış olur.

  1. $isim = "nazim";

$isim değerini nazim olarak atayıp sonra da oturumumuza kaydettik.

Oturum değişkenleri ve değerleri cookie'ler gibi bir dizide tutulur. $_SESSION ($HTTP_SESSION_VARS) dizisidir. Bu dizinin normal bir diziden hiçbir farkı yoktur. Atamaları da buna benzer bir teknik ile yapabiliriz.

  1. $_SESSION["isim"] = "mfyz";

Önce $isim diye bir oturum bilgisi yaratıp sonra bilgiyi güncelledik.


session_is_registered()


Bir oturumun kayıtlı olup olmadığını veya bir oturum değişkeninin kaydedilip edilmediğini öğrenmemize yaran bir fonksiyondur.

  1. if( session_is_registered("isim") ){
  2.   echo "isim oturumu kayıtlı";
  3. }else{
  4.   echo "isim oturumu kayıtlı degil";
  5. }

"isim" oturumunun kayıtlı olup olmadığına bakar.


session_unregister()


Kaydettiğiniz bir oturum değişkenini silmek için kullanılır.


Daha önce oluşturduğumuz isim adlı oturum bilgisini siler.


session_destroy()


Kayıtlı olan tüm oturum bilgilerini yok eder.


Geçerli olan tüm oturum verilerini yok eder.


Şimdi ufak bir uygulama yapalım :

Giriş/Çıkış İşlemi



Günümüzde neredeyse her sitede bi üyelik sistemi var (forumu veya interaktif hizmeti olmamasina rağmen), bence çoğu site için gereksiz.
Basitçe bir giriş/çıkış sistemi yapalım. Bu iş için giris.php, cikis.php, index.php dosyalarimiz olacak.

  1. <form action="giris.php" method="post">
  2.   <input type="text" name="ad">
  3.   <input type="submit" value="Giris">
  4. </form>

Basit bir index sayfamız var. Burada giriş formu var. Bunu sitenizin istediğiniz köşesine koyabilirsiniz.
Ziyaretçi adını girip Giris'e tıkladığı zaman giris.php dosyasına post edilecek.

  1. <?php
  2.  
  3. // bilgiyi alalim
  4. $ad = $_POST["ad"];
  5.  
  6. // oturum baslatalim
  7.  
  8. // giris kontorl degiskeni tanimlayalim
  9. $giris = true;
  10.  
  11. // ve degiskenleri kaydedelim
  12.  
  13. // giris tamamlandi, anasayfaya gonderelim
  14. header("location:index.php");
  15.  
  16. ?>

Şimdi ansayfamizi gelistirmemiz gerek. Giriş yapmış ziyaretçilere hitap eden kısımları küçük bir sargı ile çevreleyeceğiz.

  1. <?
  2.  
  3. // oturumu baslatalim
  4. sesion_start();
  5.  
  6. // giris bilgilerini alalim.
  7. $giris = $_SESSION["giris"];
  8. $ad    = $_SESSION["ad"];
  9.  
  10. // giris kontorlu yapalim
  11. // giris yapilmis ise $giris true olmali
  12. if( $giris ){
  13.   // giris yapilmis hosgeldin..
  14.   print 'Hoşgeldin ' . $ad . '<br>
  15.  <a href="cikis.php">Çıkış</a>';
  16. }else{
  17.   // giris yapilmamis giris formu yazdiralim
  18.   print '<form action="giris.php" method="post">
  19.    <input type="text" name="ad">
  20.    <input type="submit" value="Giris">
  21.  </form>';
  22. }
  23.  
  24. ?>

İşte oldu, anasayfamız giriş kontorlu yaparak kullanıcı daha önce giriş yapmışsa tanıyor.

Çıkış dosyamız ise çok basit. oturumu öldürecek.

  1. <?
  2.  
  3. // oturumu baslatalim
  4.  
  5. // oturumu oldurelim
  6.  
  7. // ansayfaya gidelim
  8. header("location:index.php");
  9.  
  10. ?>


Hepsi bu kadar :-)

Hazırlayan : Nazım Akmandil


Yorumlar (19 yorum/ping var)



Üye Resmi Üye : nakmandil
13 Ocak Pazar ´08 18:22 tarihinde yazmış
Düzenleyen & Güncelleyen : Mehmet Fatih Yıldız
 


Üye Resmi Üye : HAYRU28
13 Ocak Pazar ´08 18:56 tarihinde yazmış
Güzel döküman tebrikler.header komutu sayfa yönlendirmesimi yapıyor acaba.
 


Üye Resmi Üye : mfyz
13 Ocak Pazar ´08 23:04 tarihinde yazmış
evet header komutu adı üstünde header öznitelikleri tanımlar. location özelliği ise sayfayı yönlendirmeni sağlar...
Buradaki kullanımla sayfa yönlendirme işi yapabilirsin.
 


Üye Resmi Üye : superselo
13 Ocak Pazar ´08 23:27 tarihinde yazmış
bu arada bu "Kod Parçası" kutusu çok hoş olmuş   :-)
 


Üye Resmi Ziyaretçi : sercan elçin
18 Mart Salı ´08 08:38 tarihinde yazmış
önemli şeylere yer verdiğiniz için teşekkür ederim.başarılarınızın devamını dileri
 


Üye Resmi Üye : the_nobody
29 Mart Cumartesi ´08 01:53 tarihinde yazmış
Bu yazı benim için çok iyi oldu =) hiç bir yerde doğru düzgün bir anlatım bulamamıştım, teşekkürler..
 


Üye Resmi Ziyaretçi : NeTHaLiL
25 Ağustos Pazartesi ´08 13:35 tarihinde yazmış
Önemli bir hatırlatma Session'lar sayfanın en başında olmak zorunda yoksa çalışmazlar,belki merak eden olursa niye çalışmadı diye en başa alsın üzerinde hiçbirşey olmamalı...
 


Üye Resmi Üye : the_nobody
26 Ağustos Salı ´08 21:06 tarihinde yazmış
Öyle bir zorunluluk yok, sadece session kullanacağın bölgelerden önce session_start(); fonksiyonunu çağırmak gerekli... Ben hep böyle kullandım, böyle kullanmaya da devam ediyorum, hiç bir sorun yaşamadım şu ana kadar.
 


Üye Resmi Üye : qplot
23 Ekim Cuma ´09 03:48 tarihinde yazmış
session_register() fonksıyonu kaldırılıyor dıye duydum ben bu fonksıyonu pek kullanmıyorum sızce bı guvenlık sorunu varmı ?
 


Üye Resmi Üye : m_plt
19 Şubat Cuma ´10 17:12 tarihinde yazmış
session_register() kullanmadan aynı şeyleri yapmamız mümkün değil mi?
 


Üye Resmi Ziyaretçi : Erman Gülhan
2 Mart Salı ´10 10:06 tarihinde yazmış
http://tr.php.net/manual/en/function.session-register.php

session_register() fonksiyonu PHP 5.3.0 versiyonu ile birlikte kullanılması oynaylanmıyor ve PHP 6.0 versiyonunda da bu fonksiyonun silineceği bildirilmiş.
 


Üye Resmi Üye : mfyz
2 Mart Salı ´10 11:02 tarihinde yazmış
Ben session_register fonksiyonunu hiç kullanmıyorum.
Oturum yazma işlemini:
$_SESSION[varname] = $value;
şeklinde yapıyorum, böyle kullanımını da öneririm.
 


Üye Resmi Ziyaretçi : tufan kursat
19 Nisan Pazartesi ´10 19:19 tarihinde yazmış
ellerinize sağlık mükemmel atlatmışsınız.
 


Üye Resmi Üye : acadmax
23 Nisan Cuma ´10 20:59 tarihinde yazmış
bu mesajımı üyelik makalenize de yazdım. Burayı sonradan gödüğüm için tekrarrlıyorum...
Sitemdeki probleme yol gösterebilir misiniz?
Problem, site frarklı alt domainlerde çalışan scriptlerden oluşuyor,
herhangi bir alt domainde giriş yapan üye( örn. emlak.bursailan.com) oto alt domaininde tanınmıyor.
işlem session ile yapılıyor.
Teşekkür ederim
 


Üye Resmi Ziyaretçi : Soner İŞBECER
20 Mayıs Perşembe ´10 17:55 tarihinde yazmış
Çok teşekkürler.. benim bi sitemde de   var dır hazır bulmuştum şimdi daha iyi anladım teşekkür ederim valla!!
 


Üye Resmi Ziyaretçi : esat baba
28 Mayıs Cuma ´10 00:23 tarihinde yazmış
siktiri boktan cvermişsin kodları çalışmıyor ki .
 


Üye Resmi Ziyaretçi : ahmet çakar
28 Temmuz Çarşamba ´10 11:58 tarihinde yazmış
hocam herşey iyi güzelde a.q bu kodlarda hata var hiç bi işe yaramadı sadece zaman kaybetmekten başka bu ne ya
 


Üye Resmi Ziyaretçi : emre saygı
31 Ağustos Salı ´10 00:39 tarihinde yazmış
kardes anlatımın guzell fakat kodların hatalı !!!!!
 


Üye Resmi Üye : mfyz
31 Ağustos Salı ´10 14:13 tarihinde yazmış
hata nerede belirtebilir misin? düzeltmeye çalışabilirim.
 


Yeni Yorum

Önce Okuyun Yorumlarınızda sosyal, dini ve politik taraflı mesajlar, başkalarına saldırı sayılabilecek laflardan kaçının. Argo kelimeler, küfürler otomatik olarak silinecektir. Bu kural ihlalleri ip, üyelik, isiminizin banlanmasına yol açabilir.

Lütfen yardıma yönelik, konuyu uzatacak sorularınızı/yorumlarınızı forumda yazınız. Burası konu dahilindeki kısa soluklu öneri/yorumlar içindir. Aksi halde yorumunuzu göremeyebilir, uyarı alabilirsiniz.

Hatırlatmak amacıyla : html kodlarının, link yapmak, vb amacıyla gireceğiniz ekstra bilimum şeylerin çalışmayacağını belirteyim. Yorumlayıcı zaten linklerinizi otomatik çevirecek, gülücüklerinizi dönüştürecektir. Zengin metin özellikleri için araç çubuğundaki butonları kullanın.


İletişim Bilgileri


E-Posta adresiniz gösterilmeyecektir.

(unut)

Üye iseniz, giriş yapıp bu bilgileri girmeden hızlıca yorum yapabilirsiniz. Yorumunuzda resminiz/ikonunuz ve profil bağlantınız görüntülenecek, aynı zamanda güvenlik kodu girmek zorunda da kalmayacaksınız.
Üye olmak için buraya tıklayın.

Güvenlik Kodu
Güvenlik kodunu göremiyorsanız sayfayı yenileyin!


Yukarıdaki güvenlik kodunu bu kutuya yazın.

Yorum   
- +

Ad soyad, eposta ve yorum alanları
(⊗ işaretli alanlar) zorunludur.





mfyz.com'da şu an 10 ziyaretçi geziniyor. Toplam 114 makale, 208 yazı, 2999 gönderi var



  • RSS mfyz.com'u RSS beslemeleri ile takip edebilirsiniz
  • ServerTR Hosting Sponsoru ServerTR.com'a çok teşekkür ederiz
  • CC 2.5 Sitedeki materyalleri Creative Commons 2.5 Lisansı çerçevesinde kullanabilirsiniz. Lisans hakkında bilgi almak için tıklayın
  • İstatistikler Site ziyaret istatistikleri, konu, eğilim gibi ilginç istatistikler hakkında
  • Site Hakkında Site altyapısı, hazırlanışı, kurallar ve felsefesi hakkında
  • İletişim İletişim formu, iletişim bilgileri

mfyz.com Türk Programcılığının Gelişmesine Adanmıştır
HTML Standartlarına Uygundur

CSS Standartlarına Uygundur