[英]PHP $_GET is removing special characters from the value
我從客戶端應用程序發送帶有 urlencoded 值的 HTTP GET 請求,在服務器端我使用$_GET["Value"]
來獲取值。
這是請求在客戶端的https://example.com/validate.php?Value=+MqZjrRvtvFdcC3GCRRnnQ==
但在服務器端$_GET["Value"]
的結果是MqZjrRvtvFdcC3GCRRnnQ==
沒有+
在MqZjrRvtvFdcC3GCRRnnQ==
的開頭我如何獲取包含所有特殊字符(如果有)的值
我嘗試htmlspecialchars($_GET["Value"])
但這也沒有用。
您不能在 URL 中注入任何隨機字符,您需要使用正確的 escaping 函數。 在 PHP 你有rawurlencode() :
$encoded = 'https://example.com/validate.php?Value=' . rawurlencode('+MqZjrRvtvFdcC3GCRRnnQ==');
https://example.com/validate.php?Value=%2BMqZjrRvtvFdcC3GCRRnnQ%3D%3D
(演示)
特別是, +
是一些舊的空白字符編碼 (U+0020),而=
通常用於將參數名稱與參數值分開。
+
是一個特殊的字符,將被 parse_str() 轉義。 您需要自己解析查詢字符串。
注意:如果有多個值,你需要先用&
分割。
呼喚
http://localhost:4000/?Value=+MqZjrRvtvFdcC3GCRRnnQ==
[$key, $value] = explode('=', $_SERVER['QUERY_STRING']);
將給出$value
+MqZjrRvtvFdcC3GCRRnnQ==
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.