受 php 1000限制,php中的新限制:每个POST 1000个字段。 有人知道这个数字是否会受到影响?...

php中的新限制:每个POST 1000个字段。 有人知道这个数字是否会受到影响?

在较新的PHP版本中,每个公式(POST)的输入文件数将限制为1000(未经验证的信息)。 它表明在某些5.2的内部版本中已经安装了此限制。 这在我们的网上商店中引起很多问题。

是否有人对此有更多了解,以及此限制是否会受到参数或变量的影响。我刚刚找到max_input_vars,但它似乎是5.4.RC4的一个完整的新var。我不确定,该var是否适合POST方法。

Peter asked 2020-02-04T23:46:13Z

8个解决方案

59 votes

max_input_vars

这是PHP尝试解决一些安全问题的尝试,并且在设置时会限制您的输入数量(因此,表单中的字段)。 也要当心

max_input_nesting_level

是的-它们是可配置的。 只需编辑您的php.ini或htaccess值。

Slavic answered 2020-02-04T23:46:32Z

31 votes

我也遇到了这个问题,正在对代码进行本地化安装,并且Debian Sid已升级到5.4 RC4 PHP。 带有复选框(!)的7000行以上的表格突然只在$ _POST数据中处理了其中的1001行……头花了几个小时。

在/etc/php5/apache2/php.ini中进行了更改:

max_input_vars = 5000

保存并重新启动apache,现在一切都很好。

Onyx answered 2020-02-04T23:47:01Z

6 votes

如果您不能/不想增加服务器限制,这是另一种解决方案

....

然后使用jQuery

function clicked() {

var cb = $('.cbox:checked').map(function() {return this.value;}).get().join(',');

$('#cboxes').val(cb);

return true;

}

我使用POST测试过帐10000条记录。

在服务器中

$cboxes = $_POST['cboxes'];

$cbox_exp =(explode(',', $cboxes));

print_r(count($cbox_exp)); //gives me 10000

Ruben Benjamin answered 2020-02-04T23:47:34Z

3 votes

只是想总结并指出几件事:

1)限制可以是如上所述的PHP。

2)限制也可以是上面提到的Web服务器。

3)Suhosin限制仅在安装后才适用。 设置在php.ini中已更改

4)如果尝试在URL中提交那么多数据,请注意浏览器URL长度限制

更改任何服务器设置后,重新启动Web服务器。

Chris answered 2020-02-04T23:48:16Z

1 votes

显然,它看起来像是导致此问题的Linux环境上的补丁。 如果您的服务器具有此补丁“ suhosin”,则可能是问题所在。 同样不可能在运行时中覆盖它,而是包含在您的php.ini中

suhosin.post.max_array_depth

suhosin.post.max_array_index_length

suhosin.post.max_name_length

suhosin.post.max_totalname_length

suhosin.post.max_vars

suhosin.post.max_value_length

dots-do-matter answered 2020-02-04T23:48:36Z

1 votes

只对要提交的某些数据进行字符串化总是好事-而不是在PHP中更改此限制。 例如,如果您要通过Ajax或表单字段发送内容,只需对引起问题的字段进行字符串化处理。

限制是在字段的“数量”上,而不是在“长度”上(如果有道理)。

Ashesh answered 2020-02-04T23:49:01Z

0 votes

这些更改往往有据可查。 您确定已将其反向移植到5.2吗? 你在哪里读的? 您似乎更有可能达到其他一些限制,例如post_max_size或Apache的LimitRequestFields,甚至是类似Suhosin的PHP安全模块。

(此外,不再支持PHP 5.2,因此我怀疑它会得到这样的升级。)

Álvaro González answered 2020-02-04T23:49:25Z

-1 votes

如果您不使用多个或超过1000个输入字段您可以将多个输入与任何特殊字符连接起来,例如max_input_vars

使用任何脚本(JavaScript或JScript)

document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value

有了这个概念,您就可以绕过max_input_vars问题。     如果在php.ini文件中增加max_input_vars,这对服务器有害。     因为它们使用更多的服务器缓存内存,有时它们会使服务器崩溃。

harpej answered 2020-02-04T23:49:55Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值