簡體   English   中英

PHP $_GET 正在從值中刪除特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM