首页 >后端开发 >php教程 >如何解决 PHP 请求和 Cookie 名称中点的自动替换问题?

如何解决 PHP 请求和 Cookie 名称中点的自动替换问题?

Linda Hamilton
Linda Hamilton原创
2024-12-26 19:33:19213浏览

How Can I Work Around PHP's Automatic Replacement of Dots in Request and Cookie Names?

PHP 自动替换请求和 Cookie 名称中的点:有解决方案吗?

PHP 自动替换请求中的点(.)以及带有下划线 (_) 的 cookie 名称,这种行为可能会出现问题。

为什么会这样PHP 能做到这一点吗?根据 PHP.net,点在 PHP 变量名称中不是有效字符,如下例所示:

$varname.ext;  /* invalid variable name */

为了避免此解析问题,PHP 将点替换为下划线。

不幸的是,没有直接的方法来禁用此行为。解决方案是在 PHP 脚本中使用 str_replace 等字符串操作函数将下划线手动转换回点:

<?php
$request_uri = $_SERVER['REQUEST_URI'];
$get_vars = $_GET;

// Convert underscores back to dots in GET variables
foreach ($get_vars as $key => $value) {
  $key = str_replace('_', '.', $key);
  $get_vars[$key] = $value;
}

// Echo the modified GET variables
print_r($get_vars);
?>

除了点之外,PHP 还将以下字符替换为下划线:

  • chr(32) ( )(空格)
  • chr(46) (.) (点)
  • chr(91) ([)(左方括号)
  • chr(128) - chr(159)(各种)

以上是如何解决 PHP 请求和 Cookie 名称中点的自动替换问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn