多维post数组PHP 5.4.6



请考虑以下简单的测试集:

<?php
$data = file_get_contents('php://input');
echo '<pre>';
echo 'raw: <br/>';
print_r($data);
echo '<br/>$_POST: <br/>';
print_r($_POST);
echo '
<form name="form1" method="post" type="application/x-www-form-urlencoded"   action="postTest.php"/>
<input type="text" name="my1[]" value="1" />
<input type="text" name="my1[]" value="2" />
<input type="text" name="my3" value="3 "/>
<input type="submit" />
</form>

在大多数运行PHP5+的服务器上返回

raw: 
my1%5B%5D=1&my1%5B%5D=2&my3=3+
$_POST: 
Array
(
    [my1] => Array
        (
            [0] => 1
            [1] => 2
        )
    [my3] => 3 
) 

。然而,在我的本地系统上,Ubuntu 12.10, Apache 2.2.22, PHP 5.4.6,区域设置tr_TR。UTF-8,它将返回

raw: 
my1%5B%5D=1&my1%5B%5D=2&my3=3+
$_POST: 
Array
(
    [my3] => 3 
)

,其中my1数组消失。请注意,$_POST['my3']仍然存在,我没有遇到任何其他问题与非数组$_POST数据,我仍然可以看到m1是从原始数据。这真是奇怪的行为。什么通常会导致这个问题?

你能试一下吗?

$post = file_get_contents("php://input");
parse_str($post , $output);
print_r($output);

查看值是否被传递到PHP

胡乱猜测…

[和]在javascript标识符中无效,在XHTML名称属性中也无效。

有两个想法:

一个服务器提供xhtml,另一个服务器提供html。

您正在使用不同的浏览器,其中一个对名称属性比另一个更挑剔。

我认为你可以把你的字段名变成my1_0和my1_1,或者类似的。

相关内容

  • 没有找到相关文章

最新更新