登入後重新導向到上一頁
登入網站時,通常可以方便地重新導向回用戶正在查看的頁面在他們登入之前。這個問題探討了一個程式碼問題,即使用者被重定向到index.php而不是預期的頁面。
在提供的範例程式碼中,login-check.php腳本決定登入狀態並傳送將參數 (p) 重新導向至 login.php 頁面。但是,它不會將用戶發送到所需的頁面,而是將他們重定向到index.php。
為了解決此問題,建議使用以下解決方案:
-
將使用者的當前頁面作為查詢字串傳遞:
- 修改登入表單以包含儲存使用者目前頁面的隱藏輸入欄位。這可以透過在 login.php 腳本中傳遞 $_SERVER['REQUEST_URI'] 來完成。
- 例如,如果使用者正在閱讀一篇文章(comment.php?articleid=17) 並嘗試離開評論,URL 將修改為:
login.php?location=comment.php?articleid=17
-
處理「位置」查詢字串在login-check.php:
- 在login-check.php腳本中,檢查$_POST['location']是否已填入。如果是,請將其儲存在 $redirect 變數中。
-
根據登入狀態和位置進行重新導向:
- 如果登入成功,請檢查$redirect 中是否有可用的重定向URL。如果是這樣,請將使用者重新導向到該頁面。否則,將它們重定向到index.php。
- 如果登入失敗或使用者已登錄,請處理適當的錯誤訊息或根據需要重新導向。
-
驗證重定向URL:
在重定向用戶之前驗證$_GET['location'] 值非常重要,以確保他們不會嘗試訪問惡意URL。
-
編碼查詢字串:
將 URL 作為 $_GET 參數傳遞時使用 urlencode 來正確編碼特殊字元。
透過實施這些更改,使用者將成功重定向到他們先前查看的頁面登入後,確保無縫的使用者體驗。
以上是為什麼我登入後重定向到index.php而不是上一頁?的詳細內容。更多資訊請關注PHP中文網其他相關文章!