方法一,$_POST

$_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的数据。

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

方法二,使用file_get_contents(“php://input”)

对于未指定 Content-Type 的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。 事实上,用PHP接收POST的任何数据均使用本方法。而不用考虑Content-Type,包括二进制文件流也是可行的。

同$HTTP_RAW_POST_DATA比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。

php://input无法读取Content-Type为multipart/form-data的POST数据,需要设置php.ini中的always_populate_raw_post_data值为On才可以。

php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。

例如,用户使用某个(客户端应用程序)(json)post给服务器一个文件,文件的内容我们不管它,但是我们要把这个文件完整的保存在服务器上,我们可以使用如下代码:

$input = file_get_contents(‘php://input‘);

file_put_contents($original, $input); //$original为服务器上的文件

方法三,使用全局变量$GLOBALS[‘HTTP_RAW_POST_DATA‘]

在$GLOBALS[‘HTTP_RAW_POST_DATA‘]存放的是POST过来的原始数据。

但$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。

以下是一个小示例,演示了$_POST,$GLOBALS[‘HTTP_RAW_POST_DATA‘]和php://input三种不同方式的接收POST数据处理:

a.html

Name:

Address:

post.php

header("Content-type:text/html;charset=utf-8");

echo ‘$_POST接收:
‘;

print_r($_POST);

echo ‘


‘;

echo ‘$GLOBALS[\‘HTTP_RAW_POST_DATA\‘]接收:
‘;

print_r($GLOBALS[‘HTTP_RAW_POST_DATA‘]);

echo ‘


‘;

echo ‘php://input接收:
‘;

$data = file_get_contents(‘php://input‘);

print_r(urldecode($data));

?>

原文:https://www.cnblogs.com/Im-Victor/p/9408982.html

php post如何获取数据,php获取POST数据的三种方法相关推荐

  1. 【Arduino串口数据保存到excel中常用三种方法】

    [Arduino串口数据保存到excel中常用三种方法] 1. 前言 2. 利用excel自带Data Streamer读取 2.1 启用 Data Streamer 加载项 2.2 刷写代码并将微控 ...

  2. java获取系统CPU和内存使用率的三种方法

    获取系统CPU和内存的三种方法: 1.使用OperatingSystemMXBean获取 2.使用sigar方法获取 3.使用oshi方法获取 以下是我在我的机子上对三种方法测试的比较 方法 准确率 ...

  3. 获取cookie_抢券第一课:三种方法获取Cookie

    现在分享京东抢券是不是不合适?毕竟还没有到双十一或者其他京东大促的时间. 记得以往京东还有那种神券299减200,399减300.基本上都是到点进行抢购,而且还不一定能抢到.不过今天先来分享获取Coo ...

  4. C#获取文件的Content-Type(MIME Type)的三种方法

    什么是ContentType? 我们知道浏览器可以处理各种各样的内容,比如:HTML.XML.JPG.Flash等等,那么浏览器是如何区分它们的呢?答案就是MIME Type,即资源的媒体类型.媒体类 ...

  5. oracle数据迁移过程中,把表中数据导出为txt文件的三种方法

    在数据迁过程中需求需要将oracle数据库数据导出程txt格式然后再导入db2库中,经查询实验汇总三种方法: 1.plsqldev 里面有一个选项可以把表以excel格式到时 2.使用spool sq ...

  6. 地址html后面传参,JS中获取地址栏url后面的参数的三种方法

    这里提供了三种获取地址栏url后面参数的方法: 方式1 传参: window.location.href = "/html/bsp/user/userEdit.html?name=四个空格& ...

  7. 【ROS仿真实战】获取机器人在gazebo位置真值的三种方法(三)

    文章目录 前言 一. 使用ROS tf库 二. 使用Gazebo Model Plugin 三. 使用libgazebo_ros_p3d插件 四.总结 前言 在ROS和Gazebo中,获取机器人的位置 ...

  8. 大数据促进中小企业快递航运战略三种方法

    如今,消费者提高了快递航运期望,这意味着从事快递航运业务的中小企业必须提高他们的战略水平,以应对更加激烈的竞争.大数据被认为是大公司通常采用的技术,而这被中小企业作为一种资源以满足客户的需求,并与行业 ...

  9. 【java】springboot项目启动数据加载内存中的三种方法

    文章目录 一.前言 二.加载方式 2.1. 第一种:使用@PostConstruct注解(properties/yaml文件). 2.2. 第二种:使用@Order注解和CommandLineRunn ...

  10. 获取Spring上下文(ApplicationContext)的三种方法

    原文:https://blog.csdn.net/chenyao1994/article/details/79708496 Spring上下文(ApplicationContext)的获取有三种方式. ...

最新文章

  1. cocos2d笔记——解析HelloWorldScene
  2. GitLab 8.15中引入了自动部署和Web终端
  3. golang内置接口error
  4. 成功解决TypeError: only integer scalar arrays can be converted to a scalar index
  5. 数据结构与算法 -- 再论递归
  6. FreeBSD的起源和发展
  7. Mac 终端 显示隐藏文件
  8. coalesce函数_什么是SQL Server COALESCE()函数?
  9. cmake编译gtest测试程序(三)
  10. Linux服务器异常关机,重启启动后weblogic无法启动
  11. java基于springboot+vue的虚拟游戏道具交易商城 element
  12. 计算机中丢失xvidcore.dll,win7系统提示“xvidcore.dll not found”的解决方法
  13. Yaml:基本语法使用
  14. 影视剪辑,零基础如何自学入门剪辑,视频剪辑入门规划
  15. 计算机主机拆装ppt模板,计算机拆装步骤222.ppt
  16. android 自定义dns解析器,Android中DNS解析
  17. 手写webpack得打包流程
  18. Html网页设计-美食网站
  19. markdown转VNode
  20. 祥云杯2022 writeup

热门文章

  1. python-list与set相互转换时的一个注意事项
  2. oracle存储过程调用http接口
  3. 网站服务器 同一局域网,500台左右局域网如何组同一个内网?
  4. 一文揭秘!自底向上构建知识图谱全过程
  5. 超全的auto.js基础操作,目前是autoX.js的控制方式。2023年7月9日更新!(第2/4章)
  6. 华为云发布《基于MetaTown构建数字资产平台》
  7. 双工及多址技术基本概念
  8. mysql 数据库命令大全_常用的MySQL数据库命令大全
  9. CentOS7 --详细配置Nginx支持PHP程序
  10. Oracle EBS 中退货订单流程的系统操作记录