這樣的,我寫了一個登入,用的是session。登入的時候,把sessionid用redis儲存起來。
現在我想實現一個功能,就是兩個使用者登入同一個賬戶,後登入的把前登入的擠掉。
我的一種想法是,登入時,更新redis中存的sessionid,登入使用者每做一次操作,都去redis中查詢他登入時存的sessionid和當前的是否一致,不一致就是未登入。但是這樣做會不會讀redis的次數太頻繁?會不會有壓力?
還有一種想法,就是登入的時候,肯定能從redis中擷取到上次存的sessionid,能不能通過這個sessionid把session檔案給銷毀,這樣,前面登入的使用者擷取不到session檔案,就算是未登入了。這種方法只是在登入的時候讀取了資料庫,讀資料庫的次數比較少。但是,有一點,我不知道怎麼通過sessionid把檔案銷毀~~
各位大牛,這兩個方法哪個好一點?第二個方法中,怎樣通過sessionid把檔案銷毀?或者有沒有更好的方法呢?謝謝指教
回複討論(解決方案)
第二種方法沒看明白。是說B登入的時候獲得session_id然後銷毀A的session檔案嗎?這怎麼做得到
第二種方法沒看明白。是說B登入的時候獲得session_id然後銷毀A的session檔案嗎?這怎麼做得到
恩,我就是這個意思,所以我想知道怎麼能做到。
做不到啊,session是儲存在使用者瀏覽器的 不是同一台電腦登入的話怎麼可能刪除
或者你的意思是A B兩個帳號只在同一台電腦登入嗎..
做不到啊,session是儲存在使用者瀏覽器的 不是同一台電腦登入的話怎麼可能刪除
或者你的意思是A B兩個帳號只在同一台電腦登入嗎..
我意思是,只是通過sessionid去刪除伺服器上儲存的檔案,這樣的話,A使用者通過他的sessionid就擷取 不到儲存到伺服器上資訊了。
登入的時候,把sessionid用redis儲存起來
你是用 使用者名稱做鍵,還是用 sessionid 做鍵?
如果用使用者名稱做鍵,那麼 redis 中只會有一個 使用者名稱存在,此時他的值(sessionid)不是你的話,就算你沒登陸
如果用 sessionid 做鍵,那麼需要依據使用者名稱查詢出對應的鍵(得到多個 sessionid)
遍曆這些 sessionid 對不是你的 sessionid 做
session_id($sessionid);
session_start();
unset_session();
最後做
session_id($你的sessionid);
session_start();
登入的時候,把sessionid用redis儲存起來
你是用 使用者名稱做鍵,還是用 sessionid 做鍵?
如果用使用者名稱做鍵,那麼 redis 中只會有一個 使用者名稱存在,此時他的值(sessionid)不是你的話,就算你沒登陸
如果用 sessionid 做鍵,那麼需要依據使用者名稱查詢出對應的鍵(得到多個 sessionid)
遍曆這些 sessionid 對不是你的 sessionid 做
session_id($sessionid);
session_start();
unset_session();
最後做
session_id($你的sessionid);
session_start();
用 使用者名稱做鍵,由於網站必須登入才能使用,那第一個問題,每次驗證是否登入都會去redis查詢一次,會不會壓力太大?使用者基數不會太大,最多也就幾萬吧。
redis 是基於記憶體的,session 是基於檔案的
你就不怕硬碟損壞?
redis 是基於記憶體的,session 是基於檔案的
你就不怕硬碟損壞?
第一句我明白,但是硬碟損壞不太懂,請版主大大賜教。
這有什麼可不懂得嗎?
杞人憂天,懂吧?
這有什麼可不懂得嗎?
杞人憂天,懂吧?
OK,明白了。3Q版主~