首页 >后端开发 >php教程 >如何防止 PHP 将 GET、POST 和 COOKIE 变量名中的点替换为下划线?

如何防止 PHP 将 GET、POST 和 COOKIE 变量名中的点替换为下划线?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 01:59:09819浏览

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