[爆卦]瀏覽器 session是什麼?優點缺點精華區懶人包

為什麼這篇瀏覽器 session鄉民發文收入到精華區:因為在瀏覽器 session這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者onininon (萬)看板Web_Design標題[問題] 使用者關完分頁 關閉session...


大家好:

問題: 如何要確認使用者在瀏覽器上,已經沒有連線的網頁?

不是使用者關閉瀏覽器,而是關閉分頁而已。

我想要當使用者沒開啟網頁的時候就把SESSION關閉(登出)。


測試: 看到jquery有$(window).unload()

我在裡面放了$.ajax,傳送要求到logout.php

測試後,確實關閉分頁後就會連線到logout.php

但其他分頁也沒有SESSION了


請問要如何修改??

環境:php

謝謝

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.189.82
※ 編輯: onininon 來自: 220.133.189.82 (11/15 16:21)
minejel:有花心血做這各的必要嗎? 11/15 16:27
onininon:BOSS要求的我也沒辦法 orz 11/15 16:29
tonytonyjan:上面這句太中肯了QQ 11/15 16:32
chrisQQ:cookie 用 url hash count ++,unload 的時候砍掉 cookie 11/15 18:09
chrisQQ:count --,判斷 cookie == 0 的時候 unset session? 11/15 18:09
chrisQQ:只是忽然想到提供一個想法… 我也沒實際做過 -____- 11/15 18:10
chrisQQ:不過 cookie 很不準… 但可以裝裝樣子(疑?)不然就只好 11/15 18:11
chrisQQ:long polling @@? 11/15 18:11
感謝 我去實作看看

poopoo888888:session本來就是對應到一個「瀏覽器」而不是一個 11/15 18:23
poopoo888888:「分頁」不是嗎 11/15 18:24
orz 所以要另外想方法 達成關完分頁也要登出
※ 編輯: onininon 來自: 220.133.189.82 (11/16 10:26)

感謝chrisQQ大大 好像成功了orz

程式碼:
$(document).ready(function() {
if(!$.cookie("count")||parseInt($.cookie("count"))<1)
$.cookie("count","1");
else
$.cookie("count",(parseInt($.cookie("count"))+1).toString());

$(window).unload( function () {
$.cookie("count",(parseInt($.cookie("count"))-1).toString());
if($.cookie("count")=="0")
{
$.ajax
({
url: 'logout.php',
error: function(xhr) {},
success: function(response)
{
}
})
}
});

可是我的頁面裡面有iframe,開一個網頁,count就+2

可是關掉後只-1,導致數字錯誤orz...

為什麼只-1呢orz
※ 編輯: onininon 來自: 220.133.189.82 (11/16 11:16)
musie:關一個分頁只會找一個unload去執行, 11/16 11:19
musie:應該是誰在前面就執行誰. 11/16 11:20
感謝說明 看來我只能把cookie放在最外層了orz
※ 編輯: onininon 來自: 220.133.189.82 (11/16 11:28)
chrisQQ:因為 iframe 沒有 unload,你可以判斷 window.top 看是不 11/16 12:06
chrisQQ:在 iframe 裡面,是的話就不要 count++ ~ 11/16 12:06
嗯嗯 感謝 這樣子的確就不會多加了

只是以上都是在chrome正確執行

剛測試firefox count有歸0,可是沒登出,會不會ajax被擋了orz

ie9 cookie寫入失敗,囧。

快放棄了,跟boss講沒辦法做到好了( ′-`)y-~。
※ 編輯: onininon 來自: 220.133.189.82 (11/16 16:10)
chrisQQ:ie9 ... 應該要正常才對,不然就搞更複雜一點 local stora 11/16 16:39
chrisQQ:ge XDD 11/16 16:39
chrisQQ:firefox 的話,裝個 firebug 來看 request ~ 11/16 16:39
chrisQQ:在 net 那個 panel 裡面 11/16 16:40
對不起我耍笨了

ie沒成功是因為程式碼是在<!--[if !IE]>-->底下 orz

修改後就沒問題了

firebug是在網路那邊看嗎?

可是關掉網頁之後那些訊息也重置了,這樣要怎麼看orz
※ 編輯: onininon 來自: 220.133.189.82 (11/16 17:56)
chrisQQ:如果是 firebug 的話,有個不要清除可以按,我的是英文版 11/16 18:03
chrisQQ:是寫「Persist」。oh... 我發現了,關掉 tab firebug 也會 11/16 18:05
chrisQQ:自動關掉 Q__Q 這… 這是什麼巫術(誤 11/16 18:05
chrisQQ:欸… 如果是我的話,我剛好有裝 wireshark 可以看封包… 11/16 18:06
chrisQQ:不過應該有其他方法才是(我猜)為了這個裝 wireshark 好 11/16 18:06
chrisQQ:像有點蠢@@ 不過如果沒時間的話就乾脆用 wireshark 硬幹 11/16 18:07
chrisQQ:對了,你可以在 unload 最後加上 alert 看看,應該會停住 11/16 18:07
chrisQQ:如果是先關閉視窗沒等到 unload 的 ajax 跑完… 那… 11/16 18:08
chrisQQ:我覺得就算是用上了巫術也沒辦法了… 11/16 18:08

感謝chcrisQQ大大的熱心回答,unload裡有alert,chrome和fx和ie都擋住了XD

裝了鯊魚,找http.request,看不懂阿orz,url放在哪裡orz

這樣子就好了,跟boss講fx不支援( ′-`)y-~
※ 編輯: onininon 來自: 220.133.189.82 (11/17 11:15)
找到重大bug!如果只開一個頁面,然後按重新整理,ie和fx就會幫我登出了orz

chrome倒是不會,把這個bug跟boss講他大概就會放棄這功能了( ′-`)y-~
※ 編輯: onininon 來自: 220.133.189.82 (11/17 11:58)
pm2001:你乾脆那頁裡面定時送request維持session 11/17 12:52
pm2001:然後把session維持時間縮短 11/17 12:52
感謝回答,這的確是個方法,不過伺服器可能會過載XD,我還是去說服BOSS比較實際!
※ 編輯: onininon 來自: 220.133.189.82 (11/17 17:25)
chrisQQ:我也覺得說服 boss 應該是最佳解 XDD 11/17 18:17

你可能也想看看

搜尋相關網站