Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >post提交数据的常见方式及php对应的接收方法

post提交数据的常见方式及php对应的接收方法

作者头像
跑马溜溜的球
发布于 2020-12-07 06:18:36
发布于 2020-12-07 06:18:36
2K00
代码可运行
举报
文章被收录于专栏:日积月累1024日积月累1024
运行总次数:0
代码可运行

post提交数据的方式,主要体现在http协议头上的Content-Type字段,不同的Content-Type对应不同的http请求体,与之相应的php接收数据方法也不同。

1.application/x-www-form-urlencoded

1.1发送

html中的form表单,如果不设置enctype属性,就默认用该方式提交数据。

发送的http请求类似:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST http://example.com/testapi HTTP/1.1
Content-Length: 25
Content-Type: application/x-www-form-urlencoded

name=ball%E7%90%83&age=99

数据以kv对形式存并进行了urlencode,多个kv以&连接。比如上面的请求,实际发送的数据就是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name=ball%E7%90%83&age=99

1.2接收

可以使用$_POST获取数据。

例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var_dump($_POST);
//得到结果
array(2) {
  ["name"]=>
  string(7) "ball球"
  ["age"]=>
  string(2) "99"
}

2.multipart/form-data

2.1发送

html中的form也可以设置这种方式上传数据。还是1中的数据,如果用该方式发送,则请求类似:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST http://example.com/testapi HTTP/1.1
Content-Length: 234
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6XncMq0p32KiFnlE

------WebKitFormBoundary6HL7YGChzJuy0cBX
Content-Disposition: form-data; name="name"

------WebKitFormBoundary6XncMq0p32KiFnlE
Content-Disposition: form-data; name="name"

ball球
------WebKitFormBoundary6XncMq0p32KiFnlE
Content-Disposition: form-data; name="age"

99
------WebKitFormBoundary6XncMq0p32KiFnlE--

注意:数据并未进行urlencode

2.2接收

可以使用$_POST获取数据。

例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var_dump($_POST);
//得到结果
array(2) {
  ["name"]=>
  string(7) "ball球"
  ["age"]=>
  string(2) "99"
}

2.3why?

上例可以看到,同样是发送name,age,使用multipart/form-data请求要大了很多,那么该方式存在的意义是什么呢?

  1. 发送文件时,必须使用该方式。关于php如何接收上传的文件,可以点击这里查看详情
  2. 我们注意到,application/x-www-form-urlencoded方式会对数据进行urlencode而multipart/form-data则不会。所以如果发送大段汉字时,使用后者可能会让请求长度变小。

3.raw

3.1 发送

对应的content-type有application/json,text/plain等,都是将一段文本直接发给服务端。服务端的接收方式也相同,所以将其归为一类。这些方式无法通过html的form形式发送。

比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
POST http://example.com/testapi HTTP/1.1
Content-Length: 27
Content-Type: application/json

{"name":"ball球","age":99}

body中是一段json数据,但你也可以使用text/plain发送该数据,对于php服务端来说并没有特别的影响,只是使用application/json更符合规范。

3.2 接收

可以使用php://input接收数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$c = file_get_contents("php://input"); 
echo $c;
var_dump(json_decode($c, true));

//得到结果
{"name":"ball球","age":99}
array(2) {
  ["name"]=>
  string(7) "ball球"
  ["age"]=>
  int(99)
}

注意:早先的php版本,还可以从$GLOBALS‘HTTP_RAW_POST_DATA’获取数据,但php7之后,不再支持这种方式。

四.总结

发送

接收

application/x-www-form-urlencoded

$_POST

multipart/form-data(数据)

$_POST

multipart/form-data(文件)

$_FILES

raw

php://input

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/02/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
POST请求和GET请求如何传递和接收解析参数
接口参数应该怎么传递是每个项目应该面对的问题,这跟编程语言无关,今天来总结一波常用的接口参数传递方式。
码农小胖哥
2020/10/10
27.5K0
POST请求和GET请求如何传递和接收解析参数
熟悉POST提交数据的4种方式,接口测试更高效
Hi,大家好。我们都知道POST一般用于向服务端提交数据,POST提交数据的 4 种格式即Content-Type的4种形式,尤其注意每种格式中http发送请求时body中数据的格式。4种形式分别是:
可可的测试小栈
2021/12/10
2.2K0
熟悉POST提交数据的4种方式,接口测试更高效
2018-09-26 四种常见的 POST 提交数据方式四种常见的 POST 提交数据方式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。
Albert陈凯
2018/09/30
8570
2018-09-26 四种常见的 POST 提交数据方式四种常见的 POST 提交数据方式
四种常见的 POST 提交数据方式
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。类似于下面这样:
哲洛不闹
2018/09/14
2.2K0
四种常见的 POST 提交数据方式
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
OECOM
2020/07/02
1.6K0
Node中POST请求的正确处理方式
Node的 http 模块只对HTTP报文的头部进行了解析,然后触发 request 事件。如果请求中还带有内容部分(如 POST 请求,它具有报头和内容),内容部分需要用户自行接收和解析。
Qiang
2019/06/20
2.3K0
Node中POST请求的正确处理方式
Android 网络请求原理以及原始数据包
关于 HTTP 请求报文和响应报文的格式这里就不再过多介绍了,简单说,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:请求行、请求头、请求体。类似于:
开发者
2019/12/26
9660
Android 网络请求原理以及原始数据包
post请求包含哪些参数(请求方式post和get)
1)、HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。 2)、协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须 使用什么编码方式 。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。 3)、数据发送出去,还要服务端解析成功才有意义。一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
全栈程序员站长
2022/07/29
4.4K0
POST 提交数据的时候参数有哪些类型?
1. HTTP 协议是以 ASCII 码 传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。
房东的狗丶
2023/02/17
8710
2018-06-20 HTTP相关知识关于Content-TypePOST常见数据提交类型关于HTTP关于MIME类型
原文地址:https://blog.csdn.net/woaixiaoyu520/article/details/76690686
Albert陈凯
2018/07/24
2K0
PHP输入流php://input
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input
黄规速
2022/04/14
14K0
HTTP请求报文和响应报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。
10JQKA
2019/10/23
2.5K0
HTTP请求报文和响应报文
python接口自动化(十)--post请求四种传送正文方式(详解)
  post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等。我们要知道post请求四种传送正文方式首先需要先了解一下常见的四种编码方式:
北京-宏哥
2019/09/11
4K0
python接口自动化(十)--post请求四种传送正文方式(详解)
PHP 构造 multipart/form-data 格式 POST 请求体的方法
最近在尝试基于 PHP 做一个反向代理 HTTP 的程序,其中一个需求是将程序收到的HTTP请求还原回 RFC2616 的原始格式。
zgq354
2019/11/24
5.2K0
转载:POST请求的Content-Type
https://imququ.com/post/four-ways-to-post-data-in-http.html
gojam
2019/05/15
1.4K0
HTTP 协议内常见的post提交数据类型介绍
我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。HTTP 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。
EasyNVR
2020/05/26
1.1K0
python3+requests:post请求四种传送正文方式(详解)
前言:post请求我在python接口自动化2-发送post请求详解(二)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等,可以参考Get,Post请求方式经典详解进行学习一下。
用户7886150
2021/01/17
2.2K0
在GET、POST请求中,常见的几种传参格式
一: 在GET请求中,常见的几种传参格式包括: 1:查询字符串(Query String): 在URL中使用?符号将参数附加到URL末尾,多个参数之间使用&符号分隔。例如: GET /api/use
王小婷
2023/09/21
23.3K1
PHP获取POST数据的几种方法
方法1、最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据 解释:也就是表单POST过来的数据
兔云小新LM
2019/07/24
3.6K0
帮管客CRM客户管理系统Nday
漏洞大约是4月份左右交的,目前官方应该也已经修复了,总体下来感觉目前的CNVD已经不是曾经那个CNVD了,总体而言这个CRM没怎么考虑到安全问题,挖到后面漏洞交的已经不太想交了,有兴趣的可以试试挖一下其他的,这里仅给出几个点,注入之类的就暂时先不给了
Al1ex
2022/09/07
2.7K1
帮管客CRM客户管理系统Nday
推荐阅读
相关推荐
POST请求和GET请求如何传递和接收解析参数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验