如何創建一個仍然登錄的登錄系統(只要用戶不會點擊註銷)雖然瀏覽器已關閉?php:保存登錄雖然瀏覽器關閉
當使用$_SESSION
時,瀏覽器關閉時消失。所以,我們可以使用$_COOKIE
,但它看起來不那麼安全,然後會話。
雅虎,臉書,推特或任何網站如何創建他們的登錄系統,所以當用戶關閉瀏覽器時,它會保持登錄狀態?使用IP? $ _SESSION? $ _COOKIE?或者是什麼?
謝謝
如何創建一個仍然登錄的登錄系統(只要用戶不會點擊註銷)雖然瀏覽器已關閉?php:保存登錄雖然瀏覽器關閉
當使用$_SESSION
時,瀏覽器關閉時消失。所以,我們可以使用$_COOKIE
,但它看起來不那麼安全,然後會話。
雅虎,臉書,推特或任何網站如何創建他們的登錄系統,所以當用戶關閉瀏覽器時,它會保持登錄狀態?使用IP? $ _SESSION? $ _COOKIE?或者是什麼?
謝謝
如Oswald所述,請勿使用$_SESSION
,因爲這會在瀏覽器關閉時結束。
會話變量存儲爲cookie,因此創建您自己的不是less secure
。
在創建自己的COOKIES
,你應該設置有效期是很長一段時間,就像是一年左右的時間,以確保該cookie不會過期,用戶將在留了下來記錄。
一個廣闊大多數生產站點使用cookie進行會話保持,只需確保會話密鑰足夠隨機,而不會被其他客戶猜到。
編輯
參見如何使用setcookie此鏈接。
setcookie("session_key", "somerandomstringrepresentingasessionkey", time() + 60*60*24*120);
下將設置爲您的網站名稱爲session_key
會話密鑰,這是你將如何獲取在運行時的數據:
$session = $_COOKIE['session_key'];
接下來的部分是你的價值將被保存,這將是您將存儲在數據庫中的會話密鑰,以便與用戶獲取並匹配,$session
現在的值是多少。
下一部分是它到期的時間,在這裏我已經把60 * 60 * 24 * 120
,這意味着當前時間,加上60秒,60分鐘,24小時,120天。這意味着從那個時刻起的120天內,即使瀏覽器在此之前關閉,該特定的Cookie也將過期。
確保您不使用會話cookie來identifiy會議。爲此,請使用session_set_cookie_params()
爲cookie提供更長的使用期限。
確保會話有很長的超時時間。這可以通過調整session.gc-maxlifetime
配置選項的值來完成。
不使用會話cookie?怎麼做?即時通訊非常新的PHP。很長時間了? –
服務器上的會話通常由cookie標識。 Cookie有兩種口味:1)會話cookie(只要瀏覽器打開時有效)2)永久性cookie(只要您在設置cookie時指定即可使用)。使用永久性cookie來識別會話。 – Oswald
非常感謝@Oswald,我會在此之後搜索有關'永久性Cookie'的信息 –
您可以設置會話cookie的生存期。默認情況下它在瀏覽器關閉。您可以在php.ini中執行此操作,或查看http://php.net/manual/en/function.session-set-cookie-params.php
當用戶登錄時加密cookie中的必要信息。 當他們訪問您的站點時,解密cookie以獲取您的信息。
另一個安全措施是使用數據庫來驗證cookie。這將有助於一些安全。我不是安全專家,還有其他安全措施,您應該可以考慮,但這應該可以幫助您開始。
我使用密碼密碼..所以我應該保持加密到cookie? Cookie會保持加密的特性嗎? –
不要將加密的密碼存儲在cookie中。在cookie中存儲必要的會話信息,這些信息可能會根據數據庫進行驗證,如果兩者匹配,則它是有效的會話。然後向用戶顯示你的視圖,他們登錄。這是一種方法。 – Nick
非常感謝您對@Nick的解釋。 –
它看起來像StackOverflow和Youtube使用Local Storage。
與Cookie不同,本地存儲沒有過期日期,但當用戶登錄或執行某些更改服務器上的某些內容時,您需要手動將本地存儲中的數據發送到服務器以驗證(通過XHR或其他溝通方式)。當用戶註銷時,使用您保存登錄信息的密鑰調用window.localStorage.removeItem()。
去你的鏈接 –
當瀏覽器關閉時,$ _SESSION不會結束。它在PHP會話垃圾收集器刪除它時結束。 – Oswald
@Oswald,但是當瀏覽器關閉時我無法訪問? –
取決於用於識別會話的cookie的生命週期。 – Oswald