Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » ://www » günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?


://www Web tasarımı ve internet ile ilgili olarak karşılaştığınız problemleri ve merak ettiklerinizi burada tartışabilirsiniz.

Yanıt
 
LinkBack Seçenekler
Old 08.07.2005   #1 (permalink)
 
bérk's Avatar
 
Üyelik Tarihi: 20.06.2002
Yer: Istanbul
Yaş: 19
Mesaj: 641
günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?


merhaba,

çok klişe bir problemdir session ile uğraşmak, session'ları zamanında bitirememek ve sitedeki aktif ziyaretçi sayısının patlaması vb.

benim sormak istediğim soru ise şu: belki üç-dört sene öncesi teknolojisi buna izin vermiyordu. ancak browser penceresi kapandığında server-side bir sayfa çağırılıp session'ı bitirebilir mi? veya böyle bir soruna siz nasıl çözüm getirirsiniz? (örnek kod olarak değil de algoritma olarak da cevaplayabilirsiniz)

not: her yol/teknoloji mübah, (js, ajax, ASP.net, PHP vb.) ancak popup vb. kullanmak yok.

selamlar
__________________
bu imzayı okurken ortalama iki - üç saniye kaybettiğinizin farkındamısınız?
bérk şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 08.07.2005   #2 (permalink)
 
cgencer's Avatar
 
Üyelik Tarihi: 02.08.2001
Yer: istanbul
Yaş: 38
Mesaj: 1,542
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

http'nin sessionless bir protokol olmasından dolayı bu doğrudan mümkün değil; böyle bir sorunun çözümü sadece periyodik olarak session'ları kontrol etmek ve ayrılmış olanları remove etmektir. standart değerlerle 15 dakika'da session kendi kendine timeout verir; yani hala bağlantı var mı kontrol edilir ve yoksa o session yok edilir. bu değer IIS'de de Apache'de de değiştirilebilir. Ama çok düşük bir değer, hafızanın şişmesine sebebiyet verir. DAha akılcı bir çözüm, her sayfada bunları kontrol etmek ve ona göre davranmaktır.
pencere kapandığı için pencereye bağlı scripting'ler (js) de hafızadan silineceğinden istesen de server'a hber ulaştıramazsın. en fazla kapanma işleminde bir uyarı, ya da senin istemediğin şekilde bir pencere açarsın. hoş; bu pencereyi negatif değerlerle açabilirsen (bazı popup'ların kullandığı taktik) ekranda gözükmez ve o da çağıracağı ufak scriptle ayrılışı server'a bildirebilirsin... ama popup oluyor yine de ortada, gözükmese de.
__________________
obsesif v2 + daha iyi net + uçuca + facebook + linkedin
cgencer şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 10.07.2005   #3 (permalink)
 
Scud's Avatar
 
Üyelik Tarihi: 25.08.2001
Yer: Antalya
Yaş: 27
Mesaj: 970
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

bildiğim kadarıyla session oluştururken herhangi bir süre belirlenmezse ömrü "browser kapanana kadar" dır...

Saygılarımla
__________________
Take me back to my boat on the river
and I won't cry out any more
Scud şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.07.2005   #4 (permalink)
 
delizeka's Avatar
 
Üyelik Tarihi: 22.04.2003
Yer: İstanbul
Yaş: 26
Mesaj: 112
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

Bilmiyorum doğru bir yaklaşım olacak mıdır ancak, JavaScript ile pencere kapandığında browser de yer alan session id lerini alarak xmlhttp tarzı bir obje ile web sitenin session kontrolü yapacak (mesela ASP) bir ASP dosyasına gönderebilirsin.Eğer aktif sessionları bir veritabanında tutuyorsan veritabanından, JavaScript yolu ile gelen session id yi silebilirsin. Tabii bu sadece teorik. Ama;

1 - JavaScript ile pencerenin kapandığını anlayabiliyoruz (her browserda çalışmayabilir tabii)
2 - JavaScript ile session cookielerine ulaşabiliyoruz
3 - JavaScript ile xmlhttp objesini kullanarak bir sayfaya erişebiliyoruz.
4 - Session ID leri server tarafından okuyabiliyor ve veritabanına kaydedebiliyoruz.

Bunları düşünce mantıklı bir teori gibi geliyor

Kolay gelsin.
delizeka şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.07.2005   #5 (permalink)
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,947
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

@Scud; session default olarak bir browserdaki son aktivite + session timeout süresi kadardır.

ana soruya gelince

<body onBeforeUnload="closeThisSession();"

şeklinde bir event tetiklenebilir. bu durumda closeThisSession fonksiyonu içerisinde xmlhttp ile çağrılan sayfa aracılığı ile bu session abandon edilerek bitirilebilir. yalnız dikkat edilmesi gereken, session abandon edilse de session değişkenler hala değer taşır. bunların da null yapılmasında fayda var. gerçi browser kapatıldığı için geri dönüş olmayacağından gereksiz görünebilir ama yapmakta fayda var.

JavaScript ile cookileri silmek server-side için herhangi bir etkileşim sunmaz. sadece bir sonraki ziyaret için kontrolde faydalı olur.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 11.07.2005   #6 (permalink)
 
soul's Avatar
 
Üyelik Tarihi: 13.07.2000
Yer: LND
Mesaj: 4,279
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

"Browser kapanınca" session uçar ancak eğer başka browser "penceresi" açıksa uçmaz.

Yani kilit nokta;
"Iexplore.exe" kapanınca session uçar (buradaki uçardan kasıt adamın bir daha o siteyi açtığında aynı sessiondan devam edemeyeceği, yoksa serverside olarak bize bu bilgi gelmez - o yüzden timeout var) ancak Iexplore.exe değil de sadece bir pencere kapatılırsa o zaman session uçmaz yeni bir pencere açılıp site yazıldığında aynı sessiondan devam edebilecektir.

işin pratiğinde de @absconder dediği yol gayet verimli ancak unutulmaması gereken bir şey var ki bu genelde yanlış bir web uygulaması tasarımı sorunudur

Yani programlama yaparken "Goto" kullanmaya benzer bunu yapmak gerçekten iyi bir neden olması gerektiğini düşünüyorum.
__________________
FERRUH.MAVİTUNA - İnanmıyorum, yeni site!
soul şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.07.2005   #7 (permalink)
 
bérk's Avatar
 
Üyelik Tarihi: 20.06.2002
Yer: Istanbul
Yaş: 19
Mesaj: 641
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

merhaba,

nedeni sadece merak. ne merakı derseniz uygulamayı gezen insanların kaç dakika/saniye durduklarını merak ediyorum. bir sayaç uygulamasında sistemi ziyaret edenlerin gezinme aralığı diye bir bölüm vardı. (5dk. az, 5dk. - 10dk. vb.) oradan ilham alarak bu soruyu sormuştum.

absconder'ın dediği fonksiyonu son dönemlerin meşhur duryası ajaxlarda kullanılan xmlhttp objesi ile bir sayfaya ulaşarak oturumu kapatmayı en matıklı yol olarak gordum.** bir de bu mesajları okumadan önce aklıma gelen bir yontem vardı. o da session.timeout = 1; olarak belirlenip js sayesinde (xmlhttp) her dakika sonunda session'ı bir daha 1 dakika canlı tutmayı düşünmüştüm. tabii ki server load hakkında sorulacak sorulara kulaklarımı tıkayacaktım.

Alıntı:
işin pratiğinde de @absconder dediği yol gayet verimli ancak unutulmaması gereken bir şey var ki bu genelde yanlış bir web uygulaması tasarımı sorunudur
$öyle bir durum da var ancak; en nihayetinde bize bu tip bir veriyi elde edecek hazır bir yol sunulmamış (serverlarda veya borwserlardaki bir özellik sayesinde biz tam olarak ne kadar zaman uygulama açık kalmış öğrenemiyoruz.) bu nedenle -tabiiki de göreceli bir tartışma olacak belki ancak- böyle bir uygulama neden tasarım sorunludur ki?

** not: yukarıda belirttiğim yolu denemedim. en kısa sürede deneyeceğim. şu durumda en mantıklısı absconder'ın belirttiği yol gözüküyor.
__________________
bu imzayı okurken ortalama iki - üç saniye kaybettiğinizin farkındamısınız?
bérk şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 14.07.2005   #8 (permalink)
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,947
Re: günün sorusu: browser penceresi kapandığın anda session'ı nasıl bitirebiliriz?

@bérk, sorulması gereken soru neden bu kadar aciliyetle session'ın bitirilmesini istiyorsun? default süre sonra server kendilikten session'ı silecek. e zaten pencere de kapandığı için yeni bir pencere açılsa dahi aynı session ID'ye erişilemeyecek.

burada bir istisna var, eğer pencere bir popup açmışsa (aynı şey Ctrl + N ile açılan pencere için de geçerlidir) session bitmeyecektir. şayet istek bunun için ise bahsettiğim yöntem işe yarayacaktır. (mesela, ana pencere kapandığında popup işlevsiz kalsın benzeri bir uygulamada talebin oldukça makul.)

eğer yukarıda bahsettiğim dışında bir uygulama ise (başka bir durum var ise bilemem) @soul'un bahsettiği tasarım sorununa katılıyorum. ancak az önceki bahsettiğim durumda gayet mantıklı bir talep.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam
Yanıt

Etiketler

bitirebiliriz , nasil , sessioni , anda , kapandigin , penceresi , browser , sorusu , gunun



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com TEKplatform TEKplatform

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim yazi yeni zoque
Zoque RSS Aboneliği
Son eklenen konuları e-posta ile haber verelim mi?

Forum Yazılımı: vBulletin® Version 3.7.3 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

Arayüz/Skin "Güneş" © www.zoque.com / net. Copyright © 1999 - 2008
Forum Saati GMT +2. Şu anda saat: 12:11.