相关疑难解决方法(0)

PHP缺少一些$ _POST值但存在于php:// input中

我有一个非常大的html表单(包含行的表,其中包含多个输入),我需要通过POST请求提交给PHP脚本.问题是PHP的$ _POST超全局中没有一些值没有出现.

我检查(使用Firebug扩展),这些值实际上是由浏览器发送到服务器的.

$ _POST被填充,但有些值只是缺失.

我检查了什么是原始请求使用:

$raw_post = file_get_contents('php://input');
Run Code Online (Sandbox Code Playgroud)

并且返回的字符串具有值.它们只是没有解析成$ _POST数组.我注意到的奇怪的是,似乎php://输入值在一定长度后被切断,其余的字符串不会通过$ _POST.

我想到了post_max_size和memory_limit并将它们设置为大值:

memory_limit = 256M
post_max_size = 150M
但根据php文档,如果请求的大于post_max_size,$ _POST不应包含任何值.

由于形式和请求的大尺寸我不能在这里发布,但我可以发布用于调试问题的PHP脚本:


var_dump($file = file_get_contents('php://input'));
var_dump($_POST);
//... then i parsed the $file
Run Code Online (Sandbox Code Playgroud)

服务器版本:Apache/2.2.9(Debian)
PHP版本:PHP 5.3.2-0.dotdeb.2

可以enyone解释这种奇怪的PHP行为的原因,我应该怎么做(更改PHP设置,代码?)在处理表单时使用$ _POST数组?

编辑:要明确:不仅缺少价值观.$ _POST也不包含这些键.

原始帖子的片段:

t_dodparam%5B198%5D=&t_dodparam2%5B198%5D=&t_kolejnosc%5B198%5D=199&n_indeks=201&n_wartosc=testtesttest
Run Code Online (Sandbox Code Playgroud)

密钥't_dodparam'在post中,它有密钥198.缺少其余的参数(ex t_dodparam2在post中,但它没有198这样的密钥,并且$ _POST中没有n_wartosc这样的密钥)

php post

49
推荐指数
4
解决办法
7万
查看次数

标签 统计

php ×1

post ×1