簡體   English   中英

PHP“Session_regenerate_id”和用戶身份驗證

[英]PHP “Session_regenerate_id” and Authentication of users

我正在我的網站上創建一個登錄功能,我正在考慮在每個頁面上重新生成會話ID以使事情更安全。

我已經閱讀了有關regenerate_id的PHP:s信息,但PHP頁面上的帖子與他們提供的有關session_regenerate_id的信息完全不同。

有人可以解釋這兩個問題:

  • 我是否需要將舊會話數據復制到新生成的會話數據中,還是自動完成? 代碼示例非常感謝...

  • 如何檢查用戶是否已登錄? 我應該在會話變量中存儲什么,以及如何存儲? 代碼示例非常感謝...

謝謝

在每個頁面上調用session_regenerate_id()可能有點過分,具體取決於您的設置。 該函數用於防止會話劫持,並且應在用戶提升其權限級別(例如登錄)時使用。 通常,一旦用戶登錄,您將切換到https連接,這意味着您只需要調用session_regenerate_id()一次,因為新的cookie將通過安全連接傳輸,並且無法被竊聽。 但是,如果您的服務器上沒有SSL證書,則重新生成每個頁面上的會話cookie可能是一個不錯的選擇。

當您調用session_regenerate_id()時,您不需要復制會話數據。 這一切都由PHP來處理。 基本上會創建一個新的會話令牌和cookie,會話數據將復制到會話存儲中以與新令牌關聯,如果將true作為單個參數傳遞給該函數,則會刪除磁盤上的舊會話數據文件。

您在會話中存儲的用於指示用戶是否已登錄的內容取決於您。 我經常只存儲一個簡單的布爾值來指示它們是否已登錄,以及其他包含用戶名,名稱等的值。然后檢查是否有人登錄就像這樣簡單:

<?php
    if ($_SESSION['logged_in']){
        //User logged in
    } else {
       //User not logged in
    }
?>

HTH。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM