猿问

表单有 1900 多个字段,由于 php html 中的查询字符串限制,无法使用 post 方法提交

我有超过 1900 个输入框列的动态表,我无法通过表单提交提交所有字段,它只通过 60% 的行来保存页面在 php 中。我猜它的查询字符串长度限制。


我已经.htaccess使用以下代码在网站文件夹中添加了文件:


RewriteEngine on


php_value post_max_size 512M

即使我php.ini在public_html文件夹中添加了文件:


file_uploads = On


php_value post_max_size = 512M


upload_max_filesize = 512M


max_input_vars 2000

我有 Godaddy 的共享托管服务器。我已经尽力了,但表单只提交了 60% 的字段。即使我已经更改了 C 面板中 php Selector 选项中 post_max_size 值的值。


江户川乱折腾
浏览 154回答 1
1回答

萧十郎

如果您使用 GET,您肯定会遇到浏览器的字符限制。相反,您应该在表单中使用POST 方法,例如<form action="http://example.com" method="post">当然,您max_input_vars应该超过您的字段最大金额。此设置限制了 superglobals $_GET,$_POST并$_COOKIE单独使用。如果您仍在使用 POST,则应验证您的max_input_vars设置是否处于活动状态:<?phpecho "max_input_vars: " . ini_get('max_input_vars') . PHP_EOL;echo "post_max_size: " . ini_get('post_max_size') . PHP_EOL;?>你说你添加php.ini到public_html. 通常php.ini不位于此文件夹中(可能是您的主机的特殊内容?!)。似乎您的 php.ini 格式不正确,因为您使用了 .htaccess 关键字,php_value并且您忘记对.htaccess使用等号max_input_vars。如果您的 php.ini 不起作用,您应该尝试将所有设置添加到您的 .htaccess 中,如下所示:php_value post_max_size 512Mphp_value max_input_vars 2000正如@NigelRen 建议的那样,您也可以拆分请求以减少字段总数。这可以通过使用AJAX来解决。它允许在不重新加载页面的情况下向服务器发送请求。实现这一点的一个很好的 JavaScript 框架可能是jQuery。通过这种方式,您可以在失去焦点后更新单个字段,或者添加一个单独的更新按钮,该按钮仅将这些行发送到已更改的服务器(例如,每个输入都会获得一个 ID,并且您计算所有具有焦点的行)。使用此方法,您还可以使用简单循环限制发送到服务器的字段数量(例如,每个循环仅更新 100 个字段)。另一种方法是分页。这意味着您每页仅显示 x 行,因此用户只能更新这些 x 行。我建议使用 AJAX,因为它会显着降低性能要求。
随时随地看视频慕课网APP
我要回答