相关文章推荐
英姿勃勃的莲藕  ·  python在文件指定位置插入字符串_pyt ...·  1 月前    · 
挂过科的山寨机  ·  高效定时任务处理:深入学习Python中AP ...·  1 年前    · 
性感的毛豆  ·  GROUP BY 聚合函数 | ...·  2 年前    · 
奔跑的洋葱  ·  jmeter ...·  2 年前    · 
Code  ›  php获取post请求的json参数开发者社区
编程语言 php post
https://cloud.tencent.com/developer/article/1580033
大力的充电器
2 年前
作者头像
vimsudoers
0 篇文章

php获取post请求的json参数

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > PHP点滴 > php获取post请求的json参数

php获取post请求的json参数

作者头像
vimsudoers
修改 于 2020-02-11 11:19:08
5.6K 0
修改 于 2020-02-11 11:19:08
举报

转自: 快乐编程 » php获取post请求的json参数

早年APP还不火的时候,php用来开发网站的表单提交,获取post参数都是用$_POST对象获取。后来开始用来开发app接口,和前端同事沟通用json格式数据传递,post请求传递的参数也是json格式,一开始不太明白,以为http请求头中的body是形如这样的格式:

json_param=一个json格式的字符串

就是把所有参数封到一起,然后编码成json格式,最后以kv的形式传递上来,但是后来发现不是,所谓的json数据格式是 http请求中的body是一个json格式的字符串 ,这个用$_POST就获取不到了。下面结合http头信息来理了一下这些个方式http请求body中的不同和如何获取这类型的参数。

php做网页的表单提交

早年网页表单的提交,都是用$_POST获取请求参数,实际上在http请求头中是用kv值的形式存在,如:

网页表单提交http请求头
网页表单提交http请求头

网页表单提交http请求头

php在接收到这种请求的时候,php底层系统会将这种字符串解析并存放进$_POST变量中,所以在php中就可以通过$_POST获取这些参数。注意看下, 这里的Content-Type是:application/x-www-form-urlencoded 。

当然在上传文件的时候,表单需要增加一个 enctype=”multipart/form-data” 才可以。早年一直不明白为什么,后来才知道这时候http头格式发生了变化,如下图:

上传文件http请求头
上传文件http请求头

上传文件http请求头

Content-Type变成了multipart/form-data格式 ,这种格式的数据获取在php底层也做了处理,普通的非文件参数一样可以通过$_POST获取,文件参数可以通过$_FILES获取。

那么开头说的json格式数据是咋一回事呢?下面分析一下。

php获取json格式数据

一开始也尝试用$_POST获取,结果没有取到,后来抓了包后才了解到: json格式的数据指的的http头body的字符串是一个json格式的字符串

下面截个http头就明白了。

http请求参数为json格式
http请求参数为json格式

http请求参数为json格式

这个在PHP中无法通过$_POST取到,php底层没有对这种方式进行处理。那么可以通过怎么样的方式去获取呢?在php中可以通过如下方式获取:

1

file_get_contents("php://input");

看到这个才恍然大悟,以前处理flash上传图片的时候也是通过这种方式获取body中的字节流的。获取到body内的数据后后续的处理就简单了,直接json_decode一下就可以了。

小结

踩完坑之后,又学到了不少新的东西,http请求头中其实还包含了不少格式,除了json,还有xml,html等等。

http各种请求头
http各种请求头

http各种请求头

为什么用json这种方式来传递数据,不用传统的kv形式呢?其实用这种方式也有一个好处,就是可以很好的支持多维数组的传递,比如下单的时候,传递的商品参数中就会有多个,传统的kv形式不好处理,用json的方式就很好解决了。

本文系转载, 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

json
php
http
编程算法

本文系 转载 , 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

json
php
http
编程算法
评论
作者已关闭评论
0 条评论
热度
最新
作者已关闭评论
关于作者
vimsudoers
新浪网技术(中国)有限公司PHP开发工程师
0
文章
0
累计阅读量
0
获赞
前往专栏
目录
  • php做网页的表单提交
  • php获取json格式数据
  • 小结
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

作者已关闭评论
 
推荐文章
英姿勃勃的莲藕  ·  python在文件指定位置插入字符串_python在文件指定位置写入字符串
1 月前
挂过科的山寨机  ·  高效定时任务处理:深入学习Python中APScheduler库的奥秘 - 知乎
1 年前
性感的毛豆  ·  GROUP BY 聚合函数 | PingCAP 文档中心
2 年前
奔跑的洋葱  ·  jmeter csv变量随机取值的方法_51CTO博客_jmeter从csv文件取值随机
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号