[英]PHP redirect back to previous page
我為login.php頁面所做的是,如果用戶已登錄,他將被重定向到first.php頁面。
session_start();
if(isset($_SESSION['usr']) && isset($_SESSION['pswd'])){
header("Location: first.php");
}
在所有其他頁面中,如果用戶尚未登錄,則會將其重定向到login.php頁面。
session_start();
if(!isset($_SESSION['usr']) || !isset($_SESSION['pswd'])){
header("Location: login.php");
}
問題在於:有沒有辦法將用戶重定向到他來自的地方? 如果您在未登錄時嘗試訪問second.php,則會立即將您重定向到login.php頁面; 一旦你登錄,你可以重定向回second.php而不是first.php嗎?
我曾嘗試使用$_SERVER['HTTP_REFERER']
,但此變量不包含任何內容; 它只包含一些東西,如果你在這里因為你點擊了一個鏈接。
讓重定向的頁面設置一個會話變量,該變量是該頁面的URL:
session_start();
if (!$logged_in)
{
$_SESSION['redirect_url'] = $_SERVER['PHP_SELF'];
header('Location: login.php');
exit;
}
然后在成功登錄后將其重定向到該URL:
session_start();
/* Login code goes here */
$redirect_url = (isset($_SESSION['redirect_url'])) ? $_SESSION['redirect_url'] : '/';
unset($_SESSION['redirect_url']);
header("Location: $redirect_url", true, 303);
exit;
以上可以改進,但這應該給你的想法。
$ _SERVER ['HTTP_REFERER']取決於Web瀏覽器,並非所有瀏覽器都將引用者發送回服務器。 許多大型網站使用的更好的方法是將當前頁面傳遞到登錄頁面:
header("Location: first.php?".$currentPageUrl);
$ current_SUrl可以從$ _SERVER ['REQUEST_URI']或$ _SERVER ['PHP_SELF']獲取;
登錄后,您可以再次將用戶重定向到$ currentPageUrl。
除此之外,將用戶名和密碼存儲在$ _SESSION中聽起來並不合適,但這是一個單獨的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.