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

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

Linda Hamilton
发布: 2024-12-26 19:33:19
原创
179 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板