日期:2014-05-17  浏览次数:20395 次

未知原因PHP突然无法获取POST url encoded数据
碰到一个非常诡异的问题:
XP Pro+SP3系统。
昨天程序原本都没问题,重启过一次apache之后,发现PHP无法取得POST url encoded 数据了,但是GET和POST multipart/form-data都可以正常获取。
也就是说当<form method="post">的时候,var_dump($_POST)为 array(0){};
当<form method="post" enctype="multipart/form-data">的时候,$_POST里面才会有值。
确定浏览器发送了POST数据了,无论是谷歌火狐IE6,传统表单提交还是ajax。
也不是只部分页面出现这个问题,所有的php都不行,甚至连phpMyAdmin都无法登录了。

今天尝试了重新安装php5.2.17,重新安装apache2.2.22.0,都无法解决。
没办法,只好使用 IIS5.1 + PHP5.2.17 isapi再测试,结果这回倒可以了,但我总不好改用IIS吧……

回忆昨天重启apache后出现问题之前,好像是运行过一次php下的go-pear.bat,然后在第一个界面就直接点叉关闭了;也有可能修改了一些其他的php.ini配置;
但最后我都重新解压了原版的php,重装了apache,按说应该不太可能是他们的原因?还是操作系统出什么诡异的状况了?

哪位大侠碰到过这种问题么?我真不想重装系统……

------解决方案--------------------
先看看 enctype='application/x-www-form-urlencoded' 结果如何?


------解决方案--------------------
你可以用$_QUERST接收一下值,看是否能接收到post过来的值,至于$_POST不能接受值,应该是配置问题,可能是你php.ini中的某个参数改变导致的!试着修改一下这个参数register_global
------解决方案--------------------
探讨
不指定enctype时,默认就是"Content-Type:application/x-www-form-urlencoded"。