首頁 >後端開發 >php教程 >PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 之間有什麼區別,我該使用哪一個?

PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 之間有什麼區別,我該使用哪一個?

Linda Hamilton
Linda Hamilton原創
2024-11-02 20:42:30485瀏覽

What are the differences between PHP_SELF, PATH_INFO, SCRIPT_NAME, and REQUEST_URI and which one should I use?

理解差異:PHP_SELF vs PATH_INFO vs SCRIPT_NAME vs REQUEST_URI

開發伺服器端應用程式時,確定要求的確切位址對於導航和處理至關重要。本文比較了四個 PHP 超全域變數:PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI,以便清楚了解它們的差異和可靠性。

PHP_SELF

PHP_SELF 表示目前正在執行的腳本。它的值包括腳本的完整 URI,包括任何子目錄或查詢字串。在提供的範例中,mod_rewrite 用於將請求路由到主控制器,PHP_SELF 將始終為“index.php”,無論實際請求的 URL 是什麼。

PATH_INFO

PATH_INFO 包含腳本名稱和任何查詢字串後面的 URI 部分。它表示相對於腳本的路徑資訊。使用相同的範例,如果要求的 URL 是“http://www.example.com/faq/whatever”,則 PATH_INFO 將保存“/faq/whatever”。

SCRIPT_NAME

SCRIPT_NAME給出目前執行腳本的完整路徑和檔案名稱。在大多數情況下,它與 PHP_SELF 類似,但在將 mod_rewrite 與 RewriteBase 一起使用或要求是子請求時有所不同。在 mod_rewrite 範例中,SCRIPT_NAME 將是“/test.php”而不是“index.php”。

REQUEST_URI

REQUEST_URI 包含客戶端發送的完整 URI,包括任何查詢字串。它是所請求 URL 最完整的表示。但是,在特定條件下,例如非空查詢字串、伺服器端重定向或 HTTP 錯誤(例如 404),它可能與 SCRIPT_NAME 和 PHP_SELF 不同。

比較和可靠性

以下範例說明了這些超全域變數之間的差異:

  • 當請求的URL 格式為「http://example.com/test.php/foo/bar」時:

    • PHP_SELF:/test.php/foo/bar
    • SCRIPT_NAME:/ test.php
    • PATH_INFO:/foo/bar
  • 輸入非空查詢字串時(http://example.com/test .php?foo=bar):

    • PHP_SELF: /test.php
    • SCRIPT_NAME: /test.php
    • PATH_INFO: (空白)
    • REQUEST_URI: /test.php?foo=bar
  • 伺服器端重定向生效時:

    • PHP_SELF:/test.php(原始請求)
    • SCRIPT_NAME:/test2.php(重定向請求)
    • REQUEST_URI:/test.php(原始請求)

基於這些範例,REQUEST_URI 提供了所請求URL 的最全面的表示。但是,它可能會受到伺服器端重定向或 HTTP 錯誤的影響。 PHP_SELF 和 SCRIPT_NAME 通常可以可靠地確定腳本的位址,但 PATH_INFO 在使用 mod_rewrite 時可用於擷取特定路徑資訊。

以上是PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 之間有什麼區別,我該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn