1

次の簡単なテスト スイートを検討してください。

<?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 が存在することを確認できます。これは本当に奇妙な動作です。この問題の一般的な原因は何ですか?

4

2 に答える 2

0

以下をお試しいただけますでしょうか。

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

値が PHP に渡されるかどうかを確認するには

于 2013-05-28T23:41:11.667 に答える
0

勝手な推測...

[ および ] は、javascript 識別子では有効ではなく、xhtml の name 属性でも有効ではありません。

だから2つのアイデア:

1 つのサーバーが xhtml を提供し、もう 1 つのサーバーが html を提供しています。

あなたは別のブラウザを使用しており、一方は他方よりも名前属性にうるさいです。

フィールド名を my1_0 や my1_1 などに変更できると思います。

于 2013-05-28T23:44:24.653 に答える