遇到奇怪问题,$_POST无法获取内容

sbdx 2016-07-24 10:34:40
运行环境
Linux wdOS 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
nginx 1.9.11
php-5.2.17
fpm

location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}


#默认配置
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;


<xmp>
<?
//var_export($_SERVER);
echo "\n-----------------------------\$_POST---------------------------------------------\n";
var_export($_POST);
echo "\n--------------------------php://input-------------------------------------------\n";
var_export(file_get_contents('php://input', 'r'));

?>
</xmp>
application/x-www-form-urlencoded:
<form action="" method="post" name='frm' enctype='application/x-www-form-urlencoded'>
Name:<input name='name' type='text' value='Alex'><br>
Pwd:<input name='pwd' type='text' value='123456'><br>
<input type='submit'>
</form><br>
multipart/form-data:
<form action="" method="post" name='frm' enctype='multipart/form-data'>
Name:<input name='name' type='text' value='Alex'><br>
Pwd:<input name='pwd' type='text' value='123456'><br>
<input type='submit'>
</form>


表单1返回
引用
-----------------------------$_POST---------------------------------------------
array (
)
--------------------------php://input-------------------------------------------
'name=Alex&pwd=123456'


表单2返回
引用
-----------------------------$_POST---------------------------------------------
array (
'name' => 'Alex',
'pwd' => '123456',
)
--------------------------php://input-------------------------------------------
''


表单1的enctype是默认属性,设置与否都是无法获取$_POST,但是php://input里有内容
$_POST必须显示声明为multipart才能获取到,百斯不得骑姐,求各位高人指点!


...全文
354 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sbdx 2016-07-26
  • 打赏
  • 举报
回复
终于找到问题所在了,我设置post_max_size=10240M导致出现问题 改成2047M,问题解决。 参考 http://bbs.csdn.net/topics/380018941
一起混吧 2016-07-25
  • 打赏
  • 举报
回复
表单1 去掉 enctype='application/x-www-form-urlencoded' 还有问题?记得用浏览器测试。
sbdx 2016-07-25
  • 打赏
  • 举报
回复
我是用浏览器啊
xuzuning 2016-07-25
  • 打赏
  • 举报
回复
问题就在于,你不是用浏览器去访问网站上的程序
sbdx 2016-07-25
  • 打赏
  • 举报
回复
现在问题重点是php://input能获取到数据,但是$_POST里没数据
xuzuning 2016-07-25
  • 打赏
  • 举报
回复
请不要再开发工具中调试代码
sbdx 2016-07-25
  • 打赏
  • 举报
回复
我去掉了,效果是一样的,依旧无法获取$_POST
xuzuning 2016-07-25
  • 打赏
  • 举报
回复
让你去掉是因为可能存在拼写错误(虽然表面上看不出来,但仍不能排除含有不可见字符) 再说,默认值是无需自己写的,徒劳的增加流量和烦恼
sbdx 2016-07-25
  • 打赏
  • 举报
回复
郁闷了,同样的代码,在另外一台wdOS上就能正确执行,没有变更过配置呀
sbdx 2016-07-25
  • 打赏
  • 举报
回复
就掉就使用默认值enctype='application/x-www-form-urlencoded' 抓包查看的,效果一样,无法获取~~
xuzuning 2016-07-25
  • 打赏
  • 举报
回复
你把 enctype='application/x-www-form-urlencoded' 去掉试试
sbdx 2016-07-25
  • 打赏
  • 举报
回复
引用 10 楼 jordan102 的回复:
表单1 去掉 enctype='application/x-www-form-urlencoded' 还有问题?记得用浏览器测试。
加上和不加都取不到值

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧