如何确定PHP默认的POST方法超过1000个变量?



我有一个表格,其中包含多个不同形式的输入,希望每个用户都有 15 个输入要传递。在这种情况下,我在表中有大约 80 个用户,我必须一次将所有表单输入发布到服务器站点。

但是,我收到了有关接收超过 1000 个输入变量的 PHP 警告,并建议增加输入变量长度的最大上限。在这种情况下,我只收到大约 75 个用户的输入。表单输入通过 jQuery 方法传递.serialize()

我想知道如何计算 php 中的输入变量计数...我尝试使用count($request->getParams())它返回15(外层键计数),我的返回变量是这样的:

name => array (
[0] => john
....
[79] => Serene
),
age => array (
[0] => 21,
....
[79] => 24,
),
....

在这种情况下,变量计数是否为15个键乘以 80 个键值对,总共1200个变量?这是PHP通过计算所有传入表单输入来计算输入变量的方式吗?

我知道如何计算多维数组,但我只是想知道 PHP 是通过计算外层键计数还是输入变量中的所有来确定输入变量长度?

(附言由于代码的设计,表格必须发布所有用户信息表单输入)

如果可能,通过序列化表单以 json 格式发布数据。您可以在服务器端解析 json 以获取所有字段。因此,您只能在单个参数中发布数据

下面是将表单数据序列化为 json 的 jquery 示例

var data = $('#myForm').serializeArray();
$.post("page.php", data);

在 php 端可以获取键值形式的关联数组

$data = json_decode($_POST['data'], true);

你的意思是count($_POST, true)

count (混合$array_or_countable[, int$mode= COUNT_NORMAL ])

模式

如果可选模式参数设置为COUNT_RECURSIVE(或1),则 count() 将递归计数数组。这对于计算多维数组的所有元素特别有用。

我想这更合适:

count($_POST, COUNT_RECURSIVE)

特别注意递归计数数组

当然,当你可以计算它们时,你可能已经超过了限制,这是针对HashDos(数组哈希表冲突攻击)。

几年前,我看了老板">Rasmus Lerdorf"(发明 PHP 的人)的精彩网络研讨会(在 HashDos 上不计算数组......哈哈)。

*PS- 如果你不知道计数可以接受 2 个参数,我不会说我花了多长时间才弄清楚那个......

你可以做以下事情:

分享我们具有多个字段的多行的经验。

对于每个用户行,添加一个复选框Edit,默认情况下未选中。

并且禁用了所有行的字段。

如果要编辑用户行,请单击该复选框。

将启用该行中的表单元素。

用户不太可能将数据添加到表单中的 75 到 80 行。

因此,只会发布用户启用的那些行。

禁用的表单元素不会提交。

而且计数很可能不到 1000。

尝试使用这种方式希望对您有所帮助

$count = 0;
foreach ($array as $type) {
$count+= count($type);
}

检查这个

最新更新