PHP 中的重定向

Subodh Poudel 2023年1月30日
  1. 在 PHP 中使用 header() 函式將 URL 作為 HTTP 標頭髮送到瀏覽器
  2. 在 PHP 中使用 Helper 方法通過帶有狀態程式碼的 header() 函式重定向到其他頁面
  3. 在 JavaScript 中使用輸出緩衝重定向到另一頁
PHP 中的重定向

我們將通過向瀏覽器傳送 HTTP 標頭,演示使用 header() 函式將頁面重定向到 PHP 中的另一種方法。此方法使用 PHP 中的內建 header() 函式,該函式將 Location 作為引數,其值是所需頁面的 URL。

我們還將介紹一種使用 URL 和狀態程式碼作為引數的幫助器函式將頁面重定向到另一個頁面的方法,然後在該方法內部呼叫 header() 函式。

我們將展示另一種使用 PHP 的 echo 內部的 javascript 重定向到另一頁面的方法,該方法使用 PHP 的 window.location 來儲存要重定向的頁面的 URL。

在 PHP 中使用 header() 函式將 URL 作為 HTTP 標頭髮送到瀏覽器

我們可以使用 header() 函式,該函式以 Location 作為引數。Location 的值是所需頁面的 URL,我們需要將其重定向。請注意,標頭功能應寫在檔案中 HTML 標籤和文字上方。將其他資料傳送到瀏覽器後,header() 函式不執行。它應該是要執行的第一行程式碼。

例如,將 URL http://facebook.com 儲存在變數 redirect_page 中。使用 header() 函式,並在函式的 Location 中指定變數 redirect_page。然後,呼叫 die() 函式。

在下面的示例中,Facebook 的 URL 儲存在 redirect_page 變數中。該變數用於標題函式。執行以下指令碼時,頁面將重定向到 Facebook 主頁。在執行 header() 函式之後,die() 函式將阻止指令碼繼續執行,以防止意外行為。請檢視 php 手冊以獲取有關 header() 函式的資訊。確保將 PHP 檔案放在本地網路伺服器中,以便在瀏覽器中執行它。

示例程式碼:

# php 7.x
<?php
$redirect_page = 'http://facebook.com';
header('Location:'  .$redirect_page);
die();
?>

在 PHP 中使用 Helper 方法通過帶有狀態程式碼的 header() 函式重定向到其他頁面

我們將使用幫助程式功能 redirect 將頁面重定向到其他頁面。

定義方法 redirect。將 URL 和狀態程式碼作為函式中的引數。將 header() 函式寫入方法內部。將 Location 的 URL 和狀態程式碼用作 header() 函式的引數。然後,呼叫 die() 函式。該指令碼在執行 header() 函式後死亡,因為它遇到了 die() 函式。在函式定義之外,呼叫提供 URL http://example.com/作為引數的 redirect 函式。它使用 URL 作為引數呼叫該函式。

在下面的示例中,狀態程式碼 301 用於永久重定向到另一個頁面。該指令碼將當前頁面重定向到 http://example.com/。請檢視 MDN Web 文件以瞭解有關 303 狀態碼的更多資訊。

示例程式碼:

#php 7.x
<?php
function redirect($url, $statusCode = 301) {
    header('Location: '  . $url, $statusCode);
    die();
}
redirect('http://example.com/');
?>

在 JavaScript 中使用輸出緩衝重定向到另一頁

我們將在 PHP 中使用 JavaScript 將頁面重定向到另一個頁面。在下面的示例中,我們將頁面重定向到 Twitter 主頁。

把標籤指令碼的型別寫成 text/javascript 來寫一些 JavaScript 程式碼。使用 window.location 來儲存 URL -
http://www.twitter.com。使用 echo 列印整個 script 標籤。

此方法稱為緩衝輸出。這是重定向到另一個頁面的更快的方法。請檢查 PHP 官方網站以瞭解有關緩衝輸出的更多資訊。

示例程式碼:

#php 7.x
<?php
echo '<script type="text/javascript">
    window.location = "http://www.twitter.com/"
    </script>';
?>
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

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