Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Agora Metin2 1
Agora Metin2
raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP Oturum Yönetimi

DumanInc

Web Development
Telefon Numarası Onaylanmış Üye
Fahri Üye
TM Üye
Katılım
19 Nis 2009
Konular
423
Mesajlar
1,880
Çözüm
14
Online süresi
3mo 2h
Reaksiyon Skoru
968
Altın Konu
38
TM Yaşı
17 Yıl 1 Ay 21 Gün
Başarım Puanı
267
MmoLira
3,804
DevLira
9
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

PHP’de Oturum Nasıl Çalışır?

PHP’de oturum verileri $_SESSION süper global değişkeni içinde dizi olarak kaydedilir.Bir oturum session_start() fonksiyonu ile başlatılır. Oturum açıldığında PHP temporary klasörüne her kullanıcı için PHPSESSID ile eşsiz bir dosya açar ve oturumu başlatır. Böylelikle kullanıcı sayfalar arasında gezinti sağlarken temporary klasöründeki kullanıcıya ait olan dosyaya ulaşabilir.

Aynı şekilde oluşturulan PHPSESSID ile sunucu kullanıcının tarayıcısına kaydedilmesi için bu değeri cokie olarak gönderir. Bu şekilde oturum döngüsü sağlanmış olur.

PHP Oturum Fonsiyonları

  • session_start :Oturum başlatır
  • session_register : Süper global değişkene değer kaydeder. $_SESSION da kullanılabilir.
  • session_destroy : Oturum verilerini yok eder.
En temel seviyede bir oturum kontrolü için yukarıdaki fonksiyonlar kullanılarak bir oturum yönetimi sağlanır.



Oturum Sınıfını Oluşturma

Yukarıdaki fonksiyonları kullanarak oturum başlatmak, yönetmek ve sonlandırmak mümkün fakat daha esnek kullanımlar ve farklı projeler içinde kullanmak için oturum yönetim sınıfı oluşturmak bir zorunluluktur. Bu şekilde yaparak oturum yönetimini her sayfada esnek bir şekilde kullanılabilir hale getirmiş oluruz.



1.Adım: Oturum sınıfı oluşturuyoruz.


1
2
3
4
5
6
7

<?php
class Oturum
{

}


2.Adım: Singleton tasarımı ile oturum açılışı için gerekli başlatma metodunu yazıyoruz. Oturum başlatıldıysa yeninden başlatmak yerine mevcut oturum üzerinden kullanıcı işlemleri devam eder.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

......

private static $oturum;

/**
* Oturumu başlatır.
*
*@return Object Oturum nesnesi
*/
public static function baslat()
{
if (self::$oturum==null)
{
self::$oturum = new Oturum();
}
return self::$oturum;
}

/**
* Oturum singleton pattern.
*
*/
private function __construct()
{
session_start();
}


3.Adım: Oturumun başlatılıp başlatılmadığı kontrolünü yapmak için kullanılabilecek bir metot yazdım.(fakat çok kullanılacak bir metot değil.)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

............

/**
* Oturum var mı kontrolü yapar.
*
*@return bool
*/
public function durum()
{
if(!session_id())
{
return false;
}
return true;
}


4.Adım: Oturum başlatıldıktan sonra $_SESSION değişkenine veri ekleyerek sayfalar arasında taşıma işlemini gerçekleştiririz. Bunun için sınıfta ekle metodu oluşturduk. $kimlik ile değişken adı, $deger ile değişkene kaydedilecek veriyi belirtiyoruz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

..............

/**
* Oturuma yeni kimlik ekler
*
*@var string $kimlik
*@var mix $deger
*/
public function ekle($kimlik,$deger)
{
if(!session_id())
{
$hata='Oturum yok Oturum::baslat() yapınız.';
throw new Exception($hata);
}
$_SESSION[(string) $kimlik] = $deger;
}


5.Adım: $_SESSOIN içindeki verileri okumak için getir ismindeki metot’a $kimlik bilgisini paraketre olarak gönderip içindeki veriyi okuma işlemini gerçekleştiriyoruz.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

..........

/**
* Oturumda kayıtlı kimliği getir
*
*@var string kimlik
*
*@return mixed $kimlik ile eşleşen kayıtlar
*/
public function getir($kimlik)
{
if(!session_id())
{
$hata="Oturum yok Oturum::baslat() yapınız.";
throw new Exception($hata);
}
if(isset($_SESSION[$kimlik]))
{
return $_SESSION[$kimlik];
}
return null;
}


6.Adım: Mevcut oturumdaki tüm kayıtlı verileri dizi olarak okumak için tumu metodunu oluşturuldu.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

...........

/**
* Oturumdaki tüm listeyi getir
*
*@return array()
*
*/
public function tumu()
{
if(!session_id())
{
$hata="Oturum yok Oturum::baslat() yapınız.";
throw new Exception($hata);
}
return $_SESSION;
}


7.Adım: Mevcut oturumu sonlandırmak için bosalt metodu oluşturuldu. Oturum verileri boşaltılıp, oturum sonlandırılıyor.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

/**
* Oturumu boşaltır
*
*@retrun bool
*
*/
public function bosalt()
{
if (session_id()) {
session_unset();
session_destroy();
$_SESSION = array();
self::$oturum=null;
return true;
}
return false;
}


8.Adım: Kayıtlı olan oturuma ait eşsiz kayıt numarasını okumak için oluşturuluş metot.



1
2
3
4
5
6
7
8
9
10
11
12

/**
* Oturumun eşsiz kaydını getir.
*
*@return string
*
*/
public function id()
{
return session_id();
}


9.Adım (Test): Oturum sınıfı oluşturuldu. Test etmek için aşağıdaki gibi test kodları yazılabilir. Unutmadan belirteyim. Genel bir kullanımdır. Sayfada çıktı işlemi yapmadan önce yazılacak ilk kod oturum başlatma kodudur. Her sayfada oturumu kullanabilmek için Oturum::baslat() metodu çalıştırılması zorunludur.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

include 'oturum.php';

Oturum::baslat();
Oturum::ekle('isim','hayri');
Oturum::ekle('sifre','123456');

echo Oturum::getir('isim');
//hayri

var_dump(Oturum::tumu());

/*
hayriarray(2) {
["isim"]=>
string(5) "hayri"
["sifre"]=>
string(6) "123456"
}
*/

Oturum::bosalt();


Oturum.php (Oturum Sınıfı)




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

<?php
final class Oturum
{
/**
*
* Oturum sınıfı
* tarafından oluşturulmuştur. Özgürce kullanabilirsiniz.
*/
private static $oturum;

/**
* Oturumu başlatır.
*
*@return Object Oturum nesnesi
*/
public static function baslat()
{
if (self::$oturum==null)
{
self::$oturum = new Oturum();
}
return self::$oturum;
}

/**
* Oturum singleton pattern.
*
*/
private function __construct()
{
session_start();
}

/**
* Oturum var mı kontrolü yapar.
*
*@return bool
*/
public function durum()
{
if(!session_id())
{
return false;
}
return true;
}

/**
* Oturuma yeni kimlik ekler
*
*@var string $kimlik
*@var mix $deger
*/
public function ekle($kimlik,$deger)
{
if(!session_id())
{
$hata='Oturum yok Oturum::baslat() yapınız.';
throw new Exception($hata);
}
$_SESSION[(string) $kimlik] = $deger;
}

/**
* Oturumda kayıtlı kimliği getir
*
*@var string kimlik
*
*@return mixed $kimlik ile eşleşen kayıtlar
*/
public function getir($kimlik)
{
if(!session_id())
{
$hata="Oturum yok Oturum::baslat() yapınız.";
throw new Exception($hata);
}
if(isset($_SESSION[$kimlik]))
{
return $_SESSION[$kimlik];
}
return null;
}

/**
* Oturumdaki tüm listeyi getir
*
*@return array()
*
*/
public function tumu()
{
if(!session_id())
{
$hata="Oturum yok Oturum::baslat() yapınız.";
throw new Exception($hata);
}
return $_SESSION;
}

/**
* Oturumu boşaltır
*
*@retrun bool
*
*/
public function bosalt()
{
if (session_id()) {
session_unset();
session_destroy();
$_SESSION = array();
self::$oturum=null;
return true;
}
return false;
}

/**
* Oturumun eşsiz kaydını getir.
*
*@return string
*
*/
public function id()
{
return session_id();
}
}
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst