在我的一个客户机服务器上,我创建了一个可能有多达800个输入字段的表单。但在提交后,第200条之后的所有输入都丢失了。我检查了max_input_vars,它被设置为1000。而max_execution_time和max_input_time则设置为60。我创建了一个测试文件,您可以在这里找到,url删除了,它创建了1000个输入字段,并在提交时打印POST数据。表单是可以的,但是这个表单在提交后也显示输入#0到输入#199作为POST数据。
There are no chance for,
- url编码为简单整数的输入错误
- 命名错误,因为它是单个数组
<?php
if($_SERVER['REQUEST_METHOD']=='POST') {
var_dump($_POST);
}
?>
<form action="" method="post">
<?php
for($i=0;$i<1000;$i++) {
echo "<input name='in[]' type='text' value='$i' />";
}
?>
<input type="submit" value="submit" />
</form>
谢谢!
在php.ini中更改以下设置:
suhosin.post.max_vars 200 200
suhosin.request.max_vars 200 200
Suhosin是一个高级的PHP安装保护系统。
可以通过在应用程序的某个地方执行以下命令来改变这些:
ini_set('suhosin.request.max_vars', 1000)
ini_set('suhosin.post.max_vars', 1000)
检查php.ini文件中的post_max_size并尝试增加它
如果你没有权限访问php.ini,试试ini_set("post_max_size", "100M");
默认是8MB