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

问题描述 投票:2回答:4

我有一个表格,其中包含多个不同形式的输入,希望每个用户都有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是否通过计算外层键计数或输入变量中的所有键来确定输入变量的长度?

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

php post warnings slim
4个回答
3
投票

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

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

模式

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

我想这更合适:

count($_POST, COUNT_RECURSIVE)

特别注意递归计数数组

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

几年前我在Boss男人“Rasmus Lerdorf”(发明PHP的那个人)上看过一个很好的网络研讨会(现在HashDos不计算数组......哈哈)。

* PS - 如果你不知道伯爵可以接受2个论点,我不会说我花了多长时间才弄明白......


4
投票

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

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

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

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

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

2
投票

你可以做以下事情:

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

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

并禁用所有行的字段。

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

将启用该行的表单元素。

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

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

禁用的表单元素不提交。

计数很可能不到1000。


2
投票

尝试使用这种方式希望它会帮助你

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

check this

© www.soinside.com 2019 - 2024. All rights reserved.