通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP的$_POST接收用户POST到服务器的数据,并进行适当的处理。但有些情况下,如用户使用客户端软件向服务端php程序发送post数据,而不能用$_POST来识别,那又该如何处理呢?www.cdxsxbx.com

我们介绍php接受post数据的三种方式:
1.$_POST方式接收数据
$_POST方式是通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。如使用$_POST[‘name’]就可以接收到网页表单以及网页异步方式post过来的数据,
即$_POST只能接收文档类型为Content-Type: application/x-www-form-urlencoded提交的数据,也就是表单POST过来的数据。

2.$GLOBALS[‘HTTP_RAW_POST_DATA’]方式接收数据
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST过来的数据取决于centent-Type的设置,只有在PHP在无法识别的Content-Type的情况下,才会将POST过来的数据原样地填入变量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,像Content-Type=application/x-www-form-urlencoded时,该变量是空的。
另外,它同样无法读取Content-Type为multipart/form-data的POST数据,也需要设置php.ini中的always_populate_raw_post_data值为On,PHP才会总把POST数据填入变量$http_raw_post_data。

3.php://input方式接收数据
如果访问原始 POST 数据的更好方法是 php://input。php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的php.ini设置,php://input不能用于 enctype=”multipart/form-data”。对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”)来获取原始数据。事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括二进制文件流也可以。php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。

最新文章

  1. Oracle Recovery 02 - 常规恢复之不完全恢复
  2. psr的规范
  3. jQuery 1.9 Ajax代码带注释
  4. Codeforces Round #342 (Div. 2) C. K-special Tables 构造
  5. jquery上传控件个人使用
  6. Word Search 解答
  7. unity3d 血液
  8. 201521123070《Java程序设计》 第11周学习总结
  9. Tableau Desktop 10.4.2 的安装和激活
  10. shell实例练习+详解
  11. Xpath初了解
  12. Python Faker的使用(1):基础使用方法与函数速查,生成随机数据
  13. Linux记录-监控系统开发
  14. Oracle数据库 查看表是否是 索引组织表的方法
  15. html 之 position 绝对定位与相对定位(待补充)
  16. 【CLR Via C#】16 数组
  17. Booting LPC-Link2, Updating LPCXpresso firmware
  18. socket编程小问题:地址已经被使用——Address already in use
  19. WPF 控件回车移动焦点
  20. hive sql 修改列名

热门文章

  1. LoRaWAN_stack移植笔记(四)__RTC
  2. idea打包报错
  3. 良许Linux | Linux学习方法及学习资料汇总
  4. python基础知识补充
  5. 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(二)
  6. 关于hashCode方法的作用
  7. P2050 [NOI2012]美食节 动态连边优化费用流
  8. P1640 [SCOI2010]连续攻击游戏 二分图构造
  9. ZOJ-3872-Beauty of Array-思维
  10. POJ 3207 Ikki's Story IV - Panda's Trick 2-sat模板题