为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
江户川乱折腾 2022-01-02 16:05:00
我有超过 1900 个输入框列的动态表,我无法通过表单提交提交所有字段,它只通过 60% 的行来保存页面在 php 中。我猜它的查询字符串长度限制。我已经.htaccess使用以下代码在网站文件夹中添加了文件:RewriteEngine onphp_value post_max_size 512M即使我php.ini在public_html文件夹中添加了文件:file_uploads = Onphp_value post_max_size = 512Mupload_max_filesize = 512Mmax_input_vars 2000我有 Godaddy 的共享托管服务器。我已经尽力了,但表单只提交了 60% 的字段。即使我已经更改了 C 面板中 php Selector 选项中 post_max_size 值的值。
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

如果您使用 GET,您肯定会遇到浏览器的字符限制。


相反,您应该在表单中使用POST 方法,例如


<form action="http://example.com" method="post">

当然,您max_input_vars应该超过您的字段最大金额。此设置限制了 superglobals $_GET,$_POST并$_COOKIE单独使用。


如果您仍在使用 POST,则应验证您的max_input_vars设置是否处于活动状态:


<?php

echo "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 512M

php_value max_input_vars 2000

正如@NigelRen 建议的那样,您也可以拆分请求以减少字段总数。这可以通过使用AJAX来解决。它允许在不重新加载页面的情况下向服务器发送请求。实现这一点的一个很好的 JavaScript 框架可能是jQuery。通过这种方式,您可以在失去焦点后更新单个字段,或者添加一个单独的更新按钮,该按钮仅将这些行发送到已更改的服务器(例如,每个输入都会获得一个 ID,并且您计算所有具有焦点的行)。使用此方法,您还可以使用简单循环限制发送到服务器的字段数量(例如,每个循环仅更新 100 个字段)。


另一种方法是分页。这意味着您每页仅显示 x 行,因此用户只能更新这些 x 行。


我建议使用 AJAX,因为它会显着降低性能要求。


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号