php - 是否可以在运行时更改 max_input_vars?

标签 php forms codeigniter input

存在大量表单元素的问题。帖子中未包含某些元素。

经过一番搜索,我看到了这个: $_POST max array size

$this->input->post('formelement') uses max_input_vars as limiter.

上面链接的答案没问题。我知道我必须在 php.ini 中使用 max_input_vars。这在本地没问题,但如果我的生产服务器的网络托管公司不允许我在他们的服务器上更改此设置 - 这不是一个选项。

我正在使用 codeIgniter 并创建如下表单:

<?php        
$attributes = array('id' => 'id of form');
echo form_open('controller/function-name', $attributes);
//actual form content
echo form_close();
?>

进一步阅读后,我明白我可以使用 http://input 来绕过这个 max_input_var 限制。

我可以通过在 controller/function-name 中执行此操作来获取原始数据输出

$postdata = file_get_contents("php://input"); 

但之后我将不得不手动检查 csrf 值等,填充 postdata,正确地分解它等等......

我也在 htaccess 中尝试过这个:(基于 max_input_vars limited in PHP 5.2.17 )

RewriteEngine On
RewriteBase /
php_value max_input_vars 6000
php_value suhosin.post.max_vars 6000
php_value suhosin.request.max_vars 6000
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

但随后网页无法访问,我收到内部错误。

我尝试进行更改的服务器正在使用 PHP Version 5.5.7-1+sury.org~precise+1

是否可以在运行时更改 max_input_vars(或者我在 htaccess 上做错了什么?)

最佳答案

不,不可能在运行时更改它。

这是因为在运行时已经处理了输入。

因此设置要么已经导致错误,要么为时已晚无法更改。

这也记录在手册中,因为它列出了您可以更改 ini 指令的地方:

如果您不确定更改 PHP 配置的所有这些地方在哪里以及如何使用它们,那部分还有另一个页面:

关于php - 是否可以在运行时更改 max_input_vars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23853634/

相关文章:

php - 如何取消追加

php - 使用 amazon s3 下载图像而不是在浏览器中显示 - Codeigniter

php - codeigniter 2.1.4 支持 http 方法自定义路由?

php - PDO 在 UTF-8 字符处截断字符串

php - 如何从两个数组创建对?

php - 格式化用 PHP 创建的 XML 文档 - DOMDocument

php - Codeigniter 版本冲突中的 SQL 查询

php - google api 联系人 php simplexml

PHP - 访问 SPAN 值

c++ - 标签文本更改时如何发出信号?