在 PHP 中返回上一頁
本文將介紹 PHP 中返回上一頁的一些方法。
在 PHP 中使用 HTTP_REFERER
請求標頭返回到上一頁
HTTP_REFERER
請求標頭返回在 PHP 中請求當前頁面的頁面的 URL。標頭使伺服器能夠確認使用者訪問當前頁面的位置。標頭用作 $_SERVER
陣列的索引。我們可以使用帶有 location
標頭的 header()
函式將當前頁面重定向到上一頁。我們應該將 location
設定為 $SERVER['HTTP_REFERER']
以返回上一頁。
讓我們看看 HTTP_REFERER
標頭是如何工作的。例如,在 HTML 中建立一個按鈕。將 action
屬性設定為 home.php
,將 method
屬性設定為 post
。將檔案另存為 index.php
。在 home.php
檔案中,檢查表單是否使用 isset()
函式提交。然後,使用 echo
函式顯示 $_SERVER[HTTP_REFERER]
標頭。
示例程式碼:
<form action ="home.php" method = "POST">
<button type="submit" name="button"> Submit</button>
</form>
if(isset($_POST['button'])){
echo $_SERVER[HTTP_REFERER];
}
輸出:
http://localhost/index.php
在這裡,我們在 index.php
檔案中建立了表單。然後,表單被提交到 home.php
檔案。這意味著 home.php
頁面是從 index.php
頁面請求的。因此,index.php
頁面是引薦來源網址。上面的輸出部分顯示 HTTP_REFERER
返回 URL http://localhost/index.php
,即引薦來源網址。
我們的目標是將當前頁面 home.php
重定向到前一頁面 index.php
。
例如,在 home.php
檔案中,建立一個變數 $message
來儲存重定向發生後要顯示的訊息。使用 urlencode()
在其引數中寫入訊息。接下來,編寫 header()
函式來設定重定向的位置。連線 $_SERVER[HTTP_REFERER]
和 "?message=".$message
並在 header()
函式中將其設定為 location
的值。接下來,呼叫 die
函式。在 index.php
檔案中,使用 echo
函式在表單正下方列印 $_GET['message']
變數。
在這裡,我們使用 urlencode()
函式來編寫訊息,因為訊息是在 URL 中查詢的字串。 $_GET
陣列中的 message
索引是我們在 URL 中使用的變數,該變數引用 header()
函式中的上一頁。
當我們點選 index.php
頁面上的按鈕時,表單被提交到 home.php
並將重定向回 index.php
頁面,即上一頁。
這樣,我們可以使用 header()
函式和 HTTP_REFERER
標頭將當前頁面返回到 PHP 中的前一頁面。
示例程式碼:
//index.php
<form action ="home.php" method = "POST">
<button type="submit" name="button"> Submit</button>
</form>
<?php
if(isset($_GET['message'])){
echo $_GET['message'];
}
?>
//home.php
if(isset($_POST['button'])){
$message = urlencode("After clicking the button, the form will submit to home.php. When, the page home.php loads, the previous page index.php is redirected. ");
header("Location:".$_SERVER[HTTP_REFERER]."?message=".$message);
die;
}
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn