搜尋

首頁  >  問答  >  主體

防止用戶退出後返回

<p>我不希望用戶在登出後透過點擊後退按鈕返回到受保護的頁面。在我的登出程式碼中,我取消設定會話並重定向到登入頁面。但是,我認為瀏覽器正在快取該頁面,因此儘管會話因註銷而被破壞,但它仍然可見。 </p> <p>我可以透過不允許瀏覽器快取來避免這種情況</p> <p><code>header("快取控制", "無緩存,無存儲,必須重新驗證")</code></p> <p>但這樣我就失去了瀏覽器快取的優勢。 </p> <p>請提出一個更好的方法來實現這一目標。我覺得,一定有方法可以透過 javascript 用戶端來處理這個問題</p>
P粉029327711P粉029327711450 天前526

全部回覆(2)我來回復

  • P粉805931281

    P粉8059312812023-08-28 18:26:27

    我也遇到了同樣的問題,花了一整天的時間來解決它, 最後修正如下:

    在登入驗證腳本中,如果使用者經過驗證,則設定一個會話值,例如如下所示:

    $_SESSION['status']="Active";

    然後在使用者設定檔腳本中放入以下程式碼片段:

    以上程式碼的作用是,只有且僅當$_SESSION['status'] 設定為"Active" 時,才會轉到使用者個人資料,並且僅當當使用者經過驗證時,此會話金鑰才會設定為「Active」... [注意否定[' ! '] 在上面的程式碼片段中]

    註銷程式碼大概應該如下:

    {
        session_start();
        session_destroy();
        $_SESSION = array();
        header("location:login.php");
    }

    希望這有幫助......!!!

    回覆
    0
  • P粉613735289

    P粉6137352892023-08-28 11:20:58

    在 PHP 中實作此功能,而不是在 javascript 中。

    在每個頁面的頂部,檢查使用者是否已登入。如果沒有,他們應該被重定向到登入頁面:

    如您所提到的,登出時,只需取消設定logging_in會話變量,然後銷毀會話:

    如果使用者現在點擊返回,則沒有logged_in會話變數可用,且頁面將不會載入。

    回覆
    0
  • 取消回覆