簡體   English   中英

返回到發出重定向請求的頁面

[英]Returning to page from where redirect request is made

有很多相關問題對此有很多答案,但我想知道什么是最好的和建議的方法。

問題很簡單。我想在不滿足條件時從一個頁面重定向到另一個頁面,並且在重定向頁面中此條件變為真后,返回到在 php 或 jsp 頁面中請求重定向的同一頁面

更相關的例子是:當用戶想從網站上購買產品時,當他選擇產品並想要付款時,網站會檢查用戶是否已登錄該網站。 如果沒有,則進入登錄頁面,登錄后直接將用戶帶到支付頁面,而不是通常登錄頁面進入的某個主頁。

有一些選項,例如存儲會話並將請求的 url 存儲在會話變量中,然后使用它返回頁面。

但我的問題是找到最合適的標准。 詳細的答案表示贊賞。 提前致謝。

你可以這樣做:

與代碼一起從理論上解釋:

首先,您需要動態獲取當前頁面,因此在 PHP 中我們有$_SERVER來完成這項工作,因此我們可以使用以下代碼來獲取我們當前的 PHP 頁面名稱:

$redirect_page =  basename($_SERVER['PHP_SELF']); /* Returns The Current PHP File Name */

注意:使用上面的代碼,您將只能獲得當前的 PHP 文件名,而不是完整的 URL。

然后我們需要使用一些可以存儲值的東西,以便能夠在下一個重定向頁面上使用它,所以我們在 PHP 中有COOKIES & SESSIONS來完成這項工作,在這里我將與您分享這兩種方法。由於我們已經獲得了頁面名稱,因此我們需要存儲它。

通過使用cookies:

我們可以像這樣創建一個 cookie:

setcookie("redirect_page", $redirect_page, time()+20);

如您所見,我們在此處創建了一個 cookie,並將重定向頁面名稱存儲在其中。 現在,當您使用header以這種方式重定向到另一個時:

header("Location: 2nd_page.php");

在第二頁上,您可以像這樣將頁面重定向到您被重定向的第一頁:

if ($value1 != $value2) {
$redirect_back = $_COOKIE['redirect_page'];
header("Location: $redirect_back");
}

通過使用會話:

我們可以這樣創建一個會話:

$_SESSION['redirect_page'] = $redirect_page;

如您所見,我們在此處創建了一個 cookie,並將重定向頁面名稱存儲在其中。 現在,當您使用header以這種方式重定向到另一個時:

header("Location: 2nd_page.php");

在第二頁上,您可以像這樣將頁面重定向到您被重定向的第一頁:

if ($value1 != $value2) {
$redirect_back = $_SESSION['redirect_page'];
header("Location: $redirect_back");
}

注意:請記住在嘗試訪問$_SESSION數組之前以及將任何輸出發送到瀏覽器之前在這兩個頁面上運行session_start()語句。

暫無
暫無

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

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