用session登入的一些問題

來源:互聯網
上載者:User
這樣的,我寫了一個登入,用的是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版主~
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.