首頁 >後端開發 >php教程 >如何防止 PHP 將 GET、POST 和 COOKIE 變數名中的點替換為底線?

如何防止 PHP 將 GET、POST 和 COOKIE 變數名中的點替換為底線?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 01:59:09816瀏覽

How Can I Prevent PHP from Replacing Dots with Underscores in GET, POST, and COOKIE Variable Names?

PHP:防止 GET、POST 和 COOKIE 名稱中的字元取代

PHP 自動以下劃線取代傳入變數名稱中的點。在某些情況下,這種行為可能是不可取的。我們如何禁用它?

為什麼 PHP 替換點

根據 PHP.net,點在變數名稱中不是有效字元。解析器會將“varname.ext”解釋為名為“varname”的變量,後面接著串聯運算子和字串“ext”,這不是預期的結果。

替代方案

儘管嘗試阻止這種行為,但 PHP 的解析機制使其成為必要。但是,有一些方法可以解決這個問題:

  • POST 變數: 在存取POST 變數之前使用str_replace 將底線替換為點:
$_POST['x.y'] = str_replace('_', '.', $_POST['x_y']);
  • GET 和COOKIE變數: 使用.htaccess 檔案中的全域變數替換模式,用於在 PHP 解析請求之前將下劃線替換為點:
RewriteEngine On
RewriteRule .* - [E=DOT:_]

以上是如何防止 PHP 將 GET、POST 和 COOKIE 變數名中的點替換為底線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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