为什么 $_POST 中的字符串不能包含点 “.”?
基本上,标题说就是一切。我在我的页面上有一个隐藏的输入,我想将名称设置为“some.major.uber.setting”
例如:<input type="hidden" name="some.major.uber.setting" value="dummy value" />
当我查看$ _POST数据时,它包含“some_major_uber_setting”。任何人都可以解释这种行为
基本上,标题说就是一切。我在我的页面上有一个隐藏的输入,我想将名称设置为“some.major.uber.setting”
例如:<input type="hidden" name="some.major.uber.setting" value="dummy value" />
当我查看$ _POST数据时,它包含“some_major_uber_setting”。任何人都可以解释这种行为
这可能是时代的遗物。/ 变量被变成标准变量( 变成 )。变量名称不能包含点,因此它们是在内部转换的。register_global = On
$_GET
$_POST
$_GET['foo']
$foo
自从10多年前最初提交CVS以来,这种情况就一直存在。
它有一个评论:
/* 确保我们的变量名称中没有空格或点(不是二进制安全) */
我不知道为什么它不是“二进制安全”...你得问问泽夫。
当前链接: https://github.com/php/php-src/blob/master/main/php_variables.c#L93