當使用者登入網站時,通常希望將他們重新導向回之前瀏覽的頁面。這提供了無縫的用戶體驗,並且無需登入後手動導航。
為了實現此目標,常見的方法是將使用者目前頁面 URL 作為 $_GET 變數傳遞到登入表單。例如,如果使用者在文章頁面「comment.php?articleid=17」上嘗試發表評論,則 URL 將包含目前位置。
登入頁面 (login.php)然後應該檢查 $_GET['location'] 是否存在。如果存在,頁面可以在成功登入後將使用者重新導向到該特定 URL。實作方法如下:
在login.php中:
<code class="php">echo '<input type="hidden" name="location" value="'; if(isset($_GET['location'])) { echo htmlspecialchars($_GET['location']); } echo '" />';</code>
此隱藏輸入欄位儲存目前頁面 URL 並將其與登入表單提交一起傳送。
在login-check.php中:
<code class="php">session_start(); $redirect = NULL; if(isset($_POST['location']) && $_POST['location'] != '') { $redirect = $_POST['location']; } if((empty($username) OR empty($password) AND !isset($_SESSION['id_login']))) { $url = 'login.php?p=1'; if(isset($redirect)) { $url .= '&location=' . urlencode($redirect); } header("Location: " . $url); exit(); } elseif (!user_exists($username,$password) AND !isset($_SESSION['id_login'])) { $url = 'login.php?p=2'; if(isset($redirect)) { $url .= '&location=' . urlencode($redirect); } header("Location:" . $url); exit(); } elseif(isset($_SESSION['id_login'])) { if($redirect) { header("Location:". $redirect); } else { header("Location:login.php?p=3"); } exit(); }</code>
在這個login-check.php中腳本:
這個機制可以平滑地重新導向到使用者登入前瀏覽的頁面,增強使用者體驗並簡化登入流程。
以上是登入成功後如何將使用者重新導向回上一頁?的詳細內容。更多資訊請關注PHP中文網其他相關文章!