如何判断POST方法默认PHP超过1000个变量?

How to determine that POST method more than 1000 variables by PHP default?

我有一个 table,它有多个单独形式的输入,希望每个用户有 15 个输入要传递。在这种情况下,我在 table 中有大约 80 个用户,我必须 post 一次将所有表单输入到服务器站点。

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

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

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

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

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

(p.s。由于代码的设计,table必须post输入所有用户信息表单

您可以执行以下操作:

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

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

并且所有行的字段都被禁用。

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

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

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

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

Disabled form elements do not submit.

并且计数很可能会少于 1000。

试试这个方法希望对你有帮助

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

check this

你是说count($_POST, true)

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

mode

If the optional mode parameter is set to COUNT_RECURSIVE (or 1), count() will recursively count the array. This is particularly useful for counting all the elements of a multidimensional array.

我想这样更合适:

count($_POST, COUNT_RECURSIVE)

特别注意递归计数数组

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

几年前,我看了 Boss 人“Rasmus Lerdorf”(发明 PHP 的人)的一个很好的网络研讨会(在 HashDos 上不是计算数组...大声笑)。

*PS - 如果您不知道 count 可以接受 2 个参数,我不会说我花了多长时间才弄明白。 ...

如果可能 post 通过序列化表单以 json 格式的数据。您可以在服务器端解析 json 以获取所有字段。所以你可以 post 单个参数中的数据

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

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

在php端可以得到键值形式的关联数组

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