如何将多个(超过100个)变量传递到PHP中

如何将多个(超过100个)变量传递到PHP中,php,jquery,variables,Php,Jquery,Variables,我知道将变量输入PHP的传统$u POST方法。然而,如果变量数量如此之多,这仍然是传递变量的最有效解决方案吗 目前在我的代码中,用户将信息输入到100多个输入文本中,然后使用$u POST方法将这些信息传递到PHP中。但是,我认为这对于许多服务器来说不会太好 从本质上讲,如果有人能告诉我将大量变量传递给服务器的理想方式,那就太好了。提前谢谢 编辑: 对于所有说这将是一场UI灾难的人来说,这已经被咨询过很多次了。然而,提交页面本质上是网站的核心,用户有理由不被大量的输入劝阻——事实上,默认数字是

我知道将变量输入PHP的传统$u POST方法。然而,如果变量数量如此之多,这仍然是传递变量的最有效解决方案吗

目前在我的代码中,用户将信息输入到100多个输入文本中,然后使用$u POST方法将这些信息传递到PHP中。但是,我认为这对于许多服务器来说不会太好

从本质上讲,如果有人能告诉我将大量变量传递给服务器的理想方式,那就太好了。提前谢谢

编辑:

对于所有说这将是一场UI灾难的人来说,这已经被咨询过很多次了。然而,提交页面本质上是网站的核心,用户有理由不被大量的输入劝阻——事实上,默认数字是20,但列表可以扩展到100个输入,这是为用户实现的选项


感谢所有建设性的回复,它们非常有帮助。

将其分解为几个请求,按几个步骤划分表单,不是更好吗

从用户体验的角度来看,向用户显示100个字段听起来非常糟糕。把它分成多个步骤怎么样?对用户来说,压力更小,而且从服务器端的角度来看,可能更容易管理

假设用户意外关闭了窗口,失去了Internet连接或发生了其他问题,导致数据无法发送到服务器。如果在完成100个输入字段后发生这种情况,我可能会离开页面,再也不会回来


从性能的角度来看,我不认为这会有太大的区别,但我还是建议采取另一种方法。

使用POST请求传递数据的标准方法,如果您将它们作为$\u POST数组的一部分,则这种方法是非常好的。此方法具有非常高的可发送数据量上限


如果您想要更灵活的方式,可以先序列化数据,发送数据,然后使用。但是你不应该需要它。表单对于您所描述的场景来说非常好。

100应该不是什么大问题。但您可以使用“[]”对输入字段进行分组

因此:


毫无疑问,你的用户体验问题已经得到控制,否则你会问这个问题

从性能的角度来看,让我们考虑一些策略来传递这些数据。

1。HTTP POST(变量作为应用程序/x-www-form-urlencoded传递)

提交内容的总大小很容易预测,但取决于表单中的内容。如果只使用选择和复选框,或者使用带整数或布尔的隐藏变量,100个元素可能会变成(比如)2KB的数据。通过2KB的数据需要多长时间?不久。显然,文本字段会改变事情(也会以您(而不是我们)可以预测的方式改变),但可能不会显著改变。编码字符串
var=Pack+my+box+和+5+打+酒+壶
为44个字符。其中100个仍将产生不到5KB的数据进行上传。即使在模拟调制解调器速度下(比如28.8Kbps或2.8KB/s),这也只是几秒钟。和文件附件将我们带入下一个战略

2。HTTP POST(变量作为多部分/表单数据传递)

如果您正在上载文件,您将使用此选项,并且可能不会用于其他用途。如果您计划使用表单上载100个4MB JPEG图像,那么我建议您通过实现基于JavaScript的后台上载程序来简化工作。让用户在搜索下一个文件时进行上载。除此之外,此格式的总开销远远大于x-www-form-urlencoded,但与附件的大小相比,开销仍然可以忽略不计

3。HTTP GET(作为HTTP请求的一部分传递的变量)

这基本上是一个x-www-form-URL编码的字符串,标记在URL的末尾。见#1


你应该考虑的另一个主要因素是你处理这个表格的速度有多快。上载时间可能很短,但如果每个表单元素需要3秒钟的数据库访问和处理时间,那么提交表单后100项会导致5分钟的等待。如果不知道您的表单内容是什么,或者您在这里真正想要实现什么,我只能说“考虑一下”。这种负载肯定是可以管理的,这取决于您希望每个字段包含的数据量,或者更确切地说,您确定的每个字段可以包含的最大数据量。在PHP中,HTTP POST请求主体的最大大小(即包含表单编码值的部分)由。它的默认值为2MB,但您可以在
php.ini
中更改它:

post_max_size = 10M # megabytes
或者在您的
.htaccess
中:

php_value post_max_size 10M
设置时请小心,因为它不应超过系统上可用的RAM数量。还可以考虑多个用户请求这个页面,如果每个用户都为他们的请求分配了一个过高的RAM,他们可以挂起或破坏你的服务器。 但是,考虑一下这里的数学。即使您有100个字段,每个字段中有20个字节,也只有2000个字节,约为2kb。即使上传速度为1Mbps(相当慢),用户也可以每秒上传128kbs。在这种速度下,100个字段中的每个字段都必须包含1311字节的数据,上传过程需要1秒的时间

在Apache上,因此在Apache超时之前,表单字段必须总共包含37.5 MBs。主机(或服务器管理员)可能会稍微更改此设置,并可能将其设置为更合理的值,例如30秒。但还是在这个利米
post_max_size = 10M # megabytes
php_value post_max_size 10M
var inputs = document.forms[0].getElementsByTagName('input')
    i      = 0,
    date   = new Date(),
    expires;

// Expires date (1 day in future)
date.setTime(date.getTime()+(24*60*60*1000));
expires = date.toGMTString();

for(var cookieNumber = 0; cookieNumber < 10; cookieNumber++) {
    var cookie = [];
    for(; i < (cookienumber * 10 + 10); i++) {
        cookie.append(encodeURIComponent(inputs[i].name) + '=' + encodeURIComponent(inputs[i].value));
    }

    document.cookie = 'savedForm' + cookieNumber + '=' + cookie.join('&') + '; expires =' + expires;
}