首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 獲取包含 & 符號的 URL 參數完整解決方案

     編輯:PHP 相關知識

在 Web 開發中,經常需要獲取上一頁的完整 URL 路徑以便在登出、重定向等場景下返回原頁面。雖然可以使用 JavaScript 的 window.history.go(-1) 實現返回,但若需在伺服端處理(如登出後跳回原頁),則必須妥善處理 URL 中的參數傳遞問題。

常見陷阱:參數被截斷

假設當前頁面 URL 為:

https://xxx/module.php?module=groupbook&view=index&id=2

若直接使用 $_SERVER['REQUEST_URI'] 獲取路徑並作為參數傳遞給登出頁面:

https://xxx/login.php?op=logout&return=https://xxx/module.php?module=groupbook&view=index&id=2

接收端解析 return 參數時,會將第一個 & 視為分隔符,導致實際獲得的值僅為 https://xxx/module.php?module=groupbook,後續參數丟失。

核心解決方案:使用 urlencode 編碼

在傳遞前對完整 URL 進行編碼,即可保留所有特殊字符:

$returnUrl = urlencode($_SERVER['REQUEST_URI']);
// 生成的跳轉鏈接
$logoutUrl = "https://xxx/login.php?op=logout&return={$returnUrl}";

接收端使用 urldecode() 還原即可獲得完整原始路徑。

最佳實踐建議

  • 凡涉及 URL 作為參數傳遞,均應雙端編碼/解碼
  • 優先使用 rawurlencode() 符合 RFC 3986 標準
  • 結合 http_build_query() 構建複雜查詢字符串更安全

掌握此技巧,可有效避免多參數 URL 傳遞時的截斷問題,保障業務流程完整性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved