警告:此页面上的表单包含超过1000个字段的PHP MySql

时间:2014-12-08 19:11:03

标签: php mysql

我收到了一份周末上线的调查问卷。达到这么多条目后,PhpMyAdmin开始显示此警告:

  

警告:此页面上的表单包含1000多个字段。上   提交,由于PHP的原因,某些字段可能会被忽略   max_input_vars配置。

该表名为survey,它有10列和300行数据 - 大多数是strings。我从哪里得到数字1000字段?一切都很好,直到survey表达到约150个条目。我担心我会丢失数据。

我的问卷包含20个页面,所有页面都有多项选择题。所有值都存储在$_SESSION数组中,然后发送到第21页的数据库。

PhpMyAdmin

6 个答案:

答案 0 :(得分:3)

你不会丢失数据。此错误消息特定于您尝试查看表的内容并一次选择太多行。表中的列数乘以显示的行数应低于php.ini中为max_input_vars设置的值。默认情况下,此值设置为1000。

当您使用特定代码时,除非您尝试执行相同的操作,否则不应遇到此错误 - 显示超过1,000个"元素"从一个时间点返回的查询。你真的希望这样做吗?如果是这样,那么要聪明地分析数据并在SQL查询中使用LIMIT。

数据本身是安全的。唯一受影响的是PHP的检索和输出能力。

答案 1 :(得分:2)

我刚刚发现新的PHP没有合适的默认值,并且php.ini变量max_input_vars被注释掉了。我取消注释该变量并且它有效。即使把它设置为1000。

答案 2 :(得分:2)

php.ini 中的以下行对我有用:
默认情况下,设置 max_input_vars 的行将被注释。
通过删除语句前的 ; 取消注释,将值从 1000 更改为 1000000 并保存文件。
然后重启Apache和MySQL。

; How many GET/POST/COOKIE input variables may be accepted
max_input_vars = 1000000

它会像魅力一样发挥作用!

答案 3 :(得分:1)

php.ini文件中使用此配置:

max_input_vars = 100000;

答案 4 :(得分:1)

在 php.ini 文件中使用此配置:

max_input_vars = 1000 to max_input_vars = 100000;

它对我有用。

答案 5 :(得分:0)

max_input_vars integer
    How many input variables may be accepted (limit is applied to $_GET, $_POST and $_COOKIE 
    superglobal separately). Use of this directive mitigates the possibility of denial of 
    service attacks which use hash collisions. If there are more input variables than specified 
    by this directive, an E_WARNING is issued, and further input variables are truncated from
    the request.

http://php.net/manual/en/info.configuration.php#ini.max-input-vars

基本上“MAX_INPUT_VARS”限制一次可以提交的输入值的数量。

出于某种原因,它说当您向服务器提交数据时,有超过1000个变量被提交。

要解决此问题,请在php配置中增加限制,或者在保存数据时更改。比如每次他们回答这么多问题或者当他们完成回答页面提交表格时。