php://在表单提交时输入丢失或截断的一半数据

时间:2015-07-06 15:54:28

标签: php forms nginx

我已经好几周都在研究这个问题了。

我有一个管理用户个人资料安全权限的表单。 表单提交数组权限[],每个键是权限名称,另一个数组作为值,使用state =>布尔和继承=> 0/1。

像这样:

permissions => [
    'per1' => [
        'stat' => true,
        'inherited' => 0
    ],
    'per2' => [
        'stat' => false,
        'inherited' => 1
    ],
    (...)
]

提交帖子后,$ _POST数组上有一个点,数据被截断并损坏。不只是缺少字段。缺少一大块数据。

以下是输出示例。

"permissions[pos.delete][state]" => "true"
"permissions[pos.delete][inherited]" => "1"
"permissions[pos.edit][state]" => "true"
"permissions[pos.edit][inherited]" => "1"
"permissions[pos.visit_day][stons[uservoucher.view][inherited]" => "1"
"permissions[wallet][state]" => "true"
"permissions[wallet][inherited]" => "1"
"permissions[webgis][inherited]" => ""
"permissions[webgis.map.circuits.edit][inherited]" => ""
"permissions[webgis.map.circuits.edit.all][inherited]" => ""
"permissions[webgis.map.edit][inherited]" => ""
"permissions[webgis.map.view][inherited]" => ""
"permissions[webgis.report.circuit][inherited]" => ""
"permissions[webgis.report.circuit.all][inherited]" => ""

在第5行你可以看到我的问题。似乎一部分后期数据丢失或被截断,数组重叠。

我运行了一个tcpdump并使用wireshark检查转储,整个帖子数据似乎没问题。这是tcpdump的部分。

permissions%5Bpos.delete%5D%5Bstate%5D=true&permissions%5Bpos.delete%5D%5Binherited%5D=1&permissions%5Bpos.edit%5D%5Bstate%5D=true&permissions%5Bpos.edit%5D%5Binherited%5D=1&permissions%5Bpos.visit_day%5D%5Bstate%5D=true&permissions%5Bpos.visit_day%5D%5Binherited%5D=1&permissions%5Bproducts%5D%5Bstate%5D=true&permissions%5Bproducts%5D%5Binherited%5D=1&permissions%5Bproducts.all%5D%5Bstate%5D=true&permissions%5Bproducts.all%5D%5Binherited%5D=1&permissions%5Bproducts.create%5D%5Bstate%5D=true&permissions%5Bproducts.create%5D%5Binherited%5D=1

转储上的数据似乎正常。但是在$ _POST和php://输入上,数据似乎被截断或损坏。 这是执行var_dump的部分(file_get_contents('php:// input'))

permissions%5Bpos.delete%5D%5Bstate%5D=true&permissions%5Bpos.delete%5D%5Binherited%5D=1&permissions%5Bpos.edit%5D%5Bstate%5D=true&permissions%5Bpos.edit%5D%5Binherited%5D=1&permissions%5Bpos.visit_day%5D%5Bstons%5Buservoucher.view%5D%5Binherited%5D=1&permissions%5Bwallet%5D%5Bstate%5D=true&permissions%5Bwallet%5D%5Binherited%5D=1&permissions%5Bwebgis%5D%5Binherited%5D=

在centOs 6专用服务器上运行nginx 1.8.0和php 5.6.10

这是我实际的php.ini最大设置:

max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 512 => 512
max_input_time => -1 => -1
max_input_vars => 10000 => 10000
post_max_size => 100M => 100M
upload_max_filesize => 2M => 2M

想法?感谢。

0 个答案:

没有答案