发布多个PHP字段的异常行为。只获得第一个

时间:2014-12-12 16:25:31

标签: php html ajax http-post

我正在开发一个基本上由一个巨大的html表单组成的Web应用程序。此表单由多个逐项列表组成,当插入特定子列表的父级时,由Ajax动态加载。 html代码相对于'子列表'是这样的:



<div id="child_list_one">
  <div class="child">
      <input type="text" name="list_one_name[]" value="CHILD ONE NAME"/>
      <input type="number" name="list_one_quant[]" value="10"/>
      <input type="number" name="list_one_price[]" value="10.10"/>
  </div>
  <div class="child">
      <input type="text" name="list_one_name[]" value="CHILD TWO NAME"/>
      <input type="number" name="list_one_quant[]" value="20"/>
      <input type="number" name="list_one_price[]" value="20"/>
  </div>
</div>
&#13;
&#13;
&#13;

问题:当触发发布请求时,在服务器端(使用PHP),$ _POST变量应包含几个带有表单数据的数组,但我只得到每个数组的第一个出现。类似的东西:

["list_one_name"]=> array(1) { [0]=> string "CHILD ONE NAME" } 
["list_one_quant"]=> array(1) { [0]=> int 10 } 
["list_one_price"]=> array(1) { [0]=> float 10.10 } 

奇怪的是,这段代码在localhost上工作,甚至在Altervista.org上创建的域上进行测试,但在生产服务器上却没有。 我开始认为这个问题与Apache配置有某种关系,但我无法弄明白。我希望你们中的一些人已经遇到过这种问题。


更新:以下代码显示我的问题与PHP版本或其配置有关:

echo file_get_contents("php://input");
print_r($_POST);

通过file_get_contents获取标准输入,我现在确信我的所有数据确实都是由PHP接收的,并且不会被Apache过滤。无论如何PHP不会自动解码索引形式的变量名,并且并非所有数据都包含在$ _POST变量中。它似乎残酷地忽略了与零不同的指数。此行为仅涉及&#39; INPUT_NAME []&#39;形式的输入名称。

为什么这只发生在生产服务器上?

Apache v。: 2.0

PHP v。: 5.3.8与Suhosin v0.9.32.1

0 个答案:

没有答案