[問題] 使用者關完分頁 關閉session

看板Web_Design作者 (萬)時間14年前 (2011/11/15 16:20), 編輯推噓4(4026)
留言30則, 7人參與, 最新討論串1/1
大家好: 問題: 如何要確認使用者在瀏覽器上,已經沒有連線的網頁? 不是使用者關閉瀏覽器,而是關閉分頁而已。 我想要當使用者沒開啟網頁的時候就把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)

11/15 16:27, , 1F
有花心血做這各的必要嗎?
11/15 16:27, 1F

11/15 16:29, , 2F
BOSS要求的我也沒辦法 orz
11/15 16:29, 2F

11/15 16:32, , 3F
上面這句太中肯了QQ
11/15 16:32, 3F

11/15 18:09, , 4F
cookie 用 url hash count ++,unload 的時候砍掉 cookie
11/15 18:09, 4F

11/15 18:09, , 5F
count --,判斷 cookie == 0 的時候 unset session?
11/15 18:09, 5F

11/15 18:10, , 6F
只是忽然想到提供一個想法… 我也沒實際做過 -____-
11/15 18:10, 6F

11/15 18:11, , 7F
不過 cookie 很不準… 但可以裝裝樣子(疑?)不然就只好
11/15 18:11, 7F

11/15 18:11, , 8F
long polling @@?
11/15 18:11, 8F
感謝 我去實作看看

11/15 18:23, , 9F
session本來就是對應到一個「瀏覽器」而不是一個
11/15 18:23, 9F

11/15 18:24, , 10F
「分頁」不是嗎
11/15 18:24, 10F
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)

11/16 11:19, , 11F
關一個分頁只會找一個unload去執行,
11/16 11:19, 11F

11/16 11:20, , 12F
應該是誰在前面就執行誰.
11/16 11:20, 12F
感謝說明 看來我只能把cookie放在最外層了orz ※ 編輯: onininon 來自: 220.133.189.82 (11/16 11:28)

11/16 12:06, , 13F
因為 iframe 沒有 unload,你可以判斷 window.top 看是不
11/16 12:06, 13F

11/16 12:06, , 14F
在 iframe 裡面,是的話就不要 count++ ~
11/16 12:06, 14F
嗯嗯 感謝 這樣子的確就不會多加了 只是以上都是在chrome正確執行 剛測試firefox count有歸0,可是沒登出,會不會ajax被擋了orz ie9 cookie寫入失敗,囧。 快放棄了,跟boss講沒辦法做到好了( ′-`)y-~。 ※ 編輯: onininon 來自: 220.133.189.82 (11/16 16:10)

11/16 16:39, , 15F
ie9 ... 應該要正常才對,不然就搞更複雜一點 local stora
11/16 16:39, 15F

11/16 16:39, , 16F
ge XDD
11/16 16:39, 16F

11/16 16:39, , 17F
firefox 的話,裝個 firebug 來看 request ~
11/16 16:39, 17F

11/16 16:40, , 18F
在 net 那個 panel 裡面
11/16 16:40, 18F
對不起我耍笨了 ie沒成功是因為程式碼是在<!--[if !IE]>-->底下 orz 修改後就沒問題了 firebug是在網路那邊看嗎? 可是關掉網頁之後那些訊息也重置了,這樣要怎麼看orz ※ 編輯: onininon 來自: 220.133.189.82 (11/16 17:56)

11/16 18:03, , 19F
如果是 firebug 的話,有個不要清除可以按,我的是英文版
11/16 18:03, 19F

11/16 18:05, , 20F
是寫「Persist」。oh... 我發現了,關掉 tab firebug 也會
11/16 18:05, 20F

11/16 18:05, , 21F
自動關掉 Q__Q 這… 這是什麼巫術(誤
11/16 18:05, 21F

11/16 18:06, , 22F
欸… 如果是我的話,我剛好有裝 wireshark 可以看封包…
11/16 18:06, 22F

11/16 18:06, , 23F
不過應該有其他方法才是(我猜)為了這個裝 wireshark 好
11/16 18:06, 23F

11/16 18:07, , 24F
像有點蠢@@ 不過如果沒時間的話就乾脆用 wireshark 硬幹
11/16 18:07, 24F

11/16 18:07, , 25F
對了,你可以在 unload 最後加上 alert 看看,應該會停住
11/16 18:07, 25F

11/16 18:08, , 26F
如果是先關閉視窗沒等到 unload 的 ajax 跑完… 那…
11/16 18:08, 26F

11/16 18:08, , 27F
我覺得就算是用上了巫術也沒辦法了…
11/16 18:08, 27F
感謝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)

11/17 12:52, , 28F
你乾脆那頁裡面定時送request維持session
11/17 12:52, 28F

11/17 12:52, , 29F
然後把session維持時間縮短
11/17 12:52, 29F
感謝回答,這的確是個方法,不過伺服器可能會過載XD,我還是去說服BOSS比較實際! ※ 編輯: onininon 來自: 220.133.189.82 (11/17 17:25)

11/17 18:17, , 30F
我也覺得說服 boss 應該是最佳解 XDD
11/17 18:17, 30F
文章代碼(AID): #1EmY3LLh (Web_Design)