PHP没有将名称中带有方括号的表单输入转换为数组


PHP not converting form inputs with square brackets in names to arrays

我正在制作一个表单,看起来像这样:

<form id="add_to_basket" action="" method="post">
    <select name="option[10]">
        <option value="1">Red</option>
        <option value="2">Silver</option>
    </select>
    <select name="option[11]">
        <option value="A">Metallic</option>
        <option value="B">Colour Changing</option>
    </select>
</form>

表单由JavaScript验证和提交,然后由PHP脚本处理。在实时服务器上,表单工作并且值被正确捕获,如果我使用var_dump()来获取$_POST的内容,我将看到如下内容:

array(1) {
    ["option"]=>
    array(2) {
        [10]=>
        string(1) "1"
        [11]=>
        string(1) "A"
    }
}

但是当我在本地服务器上做同样的事情时,我看到了这个:

array(1) {
    ["option"]=>
    string(0) ""
}

我省略了其他输入字段,但它们都没有在ID或名称中有"option"。

是否有可能,我的版本的PHP没有正确配置这样做,或者这是默认的行为,它只是应该工作?活动服务器使用PHP 5.2 (XAMPP),本地服务器使用PHP 5.3.5 (MAMP)。

感谢您的帮助和意见。

PHP用parse_str()函数解析它,该函数只使用一个现在已弃用的设置

所以检查magic_quotes_gpc设置在本地和远程和比较。

仔细看parse_str()是如何解析示例字符串的。你可以在这个字符串上使用$_SERVER['QUERY_STRING']parse_str(),看看结果。

也检查:

  • http://php.net/manual/en/info.configuration.php ini.magic-quotes-gpc
  • http://php.net/manual/en/language.variables.external.php