[linux-programlama] Re: Oturum Yonetimi

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Guray Satici (guray@uludag.edu.tr)
Date: Mon 31 May 2004 - 20:34:06 EEST


Merhabalar...
Bu dokumani gonderme sebebiniz kisileri bilgilendirme amacli ise bundan sonra
yazacaklarimi okumayiniz ..
Yok eger benim sorumun ustune yazilmis bir cevap ise
boyle bir mail atmaniza hic gerek yoktu
Sizden boyle bir istekte bulunulmadi
Arti sorulan soru ile alakasi olmayan bir mevzuda bir cevap vermis
bulunuyorsunuz.
calisan bir oturum yonetimi mekanizmasinin mevcut oldugunu zaten soylemistim
guvenligi konusunda sorularim mevcuttu

gınderdiginiz uygulama cookie ile calisan uygulamalardan ...
ben ise itinayla cookie kullanimindan kacmak istiyorum zaten
bunu da ozellikle belirtmistim

neyse yinede bu gonderdiginiz maili kisileri bilgilendirme amacli gonderilen
bir kategoriye sokuyorum ...

kendi dunyanizda size iyi calismalar diliyorum ...

On Sat, 29 May 2004 19:11:20 +0300, Eralp wrote
> =D6ncelikle veritaban=FDm=FDzda sessions isimli bir tablo
> yaratal=FDm :
>
> CREATE TABLE `sessions` (
> `username` varchar(50) NOT NULL default '',
> `sessid` varchar(102) NOT NULL default '',
> `logonned` int(20) NOT NULL default '0',
> PRIMARY KEY (`username`)
> ) TYPE=3DMyISAM;
>
> =FEimdi =F6ncelikle kullan=FDc=FDn=FDn login olurken kullanaca=F0=FD
> = sessstart fonksiyonunu yazal=FDm :
>
> function sessstart($kullanici,$db_baglan) {
>
> //e=F0er ayn=FD kullan=FDc=FD ismiyle ba=FEka bir kullan=FDc=FD
> login = olmu=FEsa bunu sistemden atal=FDm. Bu sayede ayn=FD anda
> login olan iki kullan=FDc=FD engelleniyor.
> $delete=3Dmysql_query("DELETE FROM sessions WHERE
> username=3D'$kullanici'",$db_baglan);
>
> //i=E7inde bulundu=F0umuz an=FD timestamp cinsinden alal=FDm
> $suan_timestamp=3Dmktime();
>
> //ayn=FD oturum id'sinin ba=FEka kullan=FDc=FDlara da verilmesini =
> engellemek
> i=E7in bir do while d=F6ng=FCs=FCyle kontrol yap=FDyoruz.=20
> do {
>
> //kendimize bir oturum id'si =FCretelim
> $sessid=3D md5(uniqid(microtime(), 1)) . getmypid ();
> //bu oturum id'si ba=FEka birine atanm=FD=FE m=FD?
> $control=3Dmysql_query("SELECT sessid FROM sessions WHERE
> sessid=3D'$sessid'",$db_baglan);
> } while( mysql_num_rows($control)>0) ;=20
>
> //e=F0er =FCretti=F0imiz id "unique" ise kullan=FDc=FDn=FDn login =
> i=FElemini
> veritaban=FDna i=FEleyelim
> $insert=3Dmysql_query("INSERT INTO `sessions` (`username`, `sessid`,
> `logonned`) VALUES ('$kullanici', '$sessid',
> $suan_timestamp);",$db_baglan);
>
> //oturum id'sini cookie olarak istemci browser'=FDna g=F6nderelim
> setcookie("sessid",$sessid,0);
> }
>
> bu fonksiyonda =FEifre kontrol=FC gibi =FEeylere yer verilmedi=F0ini
> g=F6r=FCyorsunuz. Bu t=FCr =FEeyler ihtiya=E7lara g=F6re eklenmelidir.
>
> En =F6nemli fonksiyonlardan biri sesscontrol ise =FEu =FEekildedir :
>
> function sesscontrol($sessid,$db_baglan) {
>
> //t=FCm kullan=FDc=FDlar i=E7in genel kontrol 10 dakika i=FElem
> yapmayan = at=FDlacak $suan_timestamp=3Dmktime();
>
> $timestamp=3D$suan_timestamp-1200; // 1200=3D60sn x 10dk bu de=F0er
> istenildi=F0i =FEekilde de=F0i=FEebilir.
>
> //son i=FElemini 10 dakika =F6ncesine dek yapm=FD=FE
> kullan=FDc=FDlar = at=FDl=FDyor. $at_query=3Dmysql_query("DELETE
> FROM sessions WHERE logonned < $timestamp",$db_baglan);
>
> //tamamd=FDr
>
> //i=FElemini ya=F0t=FD=F0=FDm=FDz kullan=FDc=FD halen sistemde mi?=20
> $sessquery=3Dmysql_query("SELECT username FROM sessions WHERE
> sessid=3D'$sessid'",$db_baglan);
> if (mysql_num_rows($sessquery)<>0){
> //evet sistemde
> $array=3Dmysql_fetch_row($sessquery);
> $login=3D$array[0];
>
> //veritaban=FDndaki logonned alan=FDn=FD =FEu anki zamana g=F6re =
> g=FCncelliyoruz
> $update=3Dmysql_query("UPDATE `sessions` SET `logonned` =3D =
> $suan_timestamp
> WHERE `username` =3D '$login' AND `sessid` =3D'$sessid'",$db_baglan);=20
> //kullan=FDc=FD ismini fonksiyondan ihra=E7 ediyoruz
> return $login;
> } else {
> //kullan=FDc=FD sistemde de=F0il
> //oturum id'sini kullan=FDc=FD browser'=FDndan siliyoruz
> setcookie("sessid","",0);
>
> }
> }
>
> bu fonksiyonun kullan=FDm=FD =FEu =FEekilde olacakt=FDr :
>
> oturum kontrol=FC yapmak istedi=F0imiz sayfan=FDn ba=FE=FDnda=20
>
> $kullanici=3Dsesscontrol($HTTP_COOKIE_VARS['sessid'],$db_baglan);
>
> gibi bir ifade kullan=FDr=FDz. E=F0er $kullanici de=F0i=FEkeni bir =
> de=F0er al=FDyorsa
> sistemde login olmu=FE kullan=FDc=FD var demektir e=F0er bo=FE bir =
> de=F0er d=F6n=FCyorsa
> login olmu=FE kimse yok demektir.
>
> En basit fonksiyonumuz ise logout i=FEleminde kullan=FDlacak sessdestroy
> fonksiyonu :
>
> function sessdestroy($kullanici,$db_baglan) {
>
> //kullan=FDc=FDn=FDn login i=FElemini veritaban=FDndan silelim
> $delete=3Dmysql_query("DELETE FROM sessions WHERE
> username=3D'$kullanici'",$db_baglan);
> setcookie("sessid","",0);
>
> }
>
> bu fonksiyon hi=E7 bir de=F0er d=F6nd=FCrmez.
>
> Bu t=FCr i=FElemler i=E7in veritaban=FD kullanmam=FDz=FDn en
> =F6nemli = sebebi sitede o an bulunan ki=FEileri listelemekte
> sa=F0layaca=F0=FD kolayl=FDkt=FDr.


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.