PHP获取表单数据的方法

PHP获取表单数据的方法主要有GET、POST和REQUEST三种方式。

注意,提交表单的方法只有POST和GET两种。POST和GET都可以向Web服务器传输数据。

GET与POST对比

对比 GET POST
附加形式 URL之后 HTML HEADER
参数处理方式 URL编码 无URL编码
传输数据的大小 小于2kB 理论上无限制
安全性 用户可见,不安全 用户不可见,安全
跨域 支持 支持
适用场景 数据查询 数据添加、修改和删除

GET

  • 附加形式:GET方法的数据会附在URL之后(即把数据放置在HTTP协议头中),以“?”分割URL和传递数据,参数之间以“&”连接。使用GET方式时,URL较长,数据可见。

  • 参数处理方式 :GET方法传输参数,如果数据是英文字母/数字,则原样,若数据中包含空格或者汉字,则需要进行编码处理。相关的例子可以看这里提到的问题:URL 编码

  • 传输数据的大小:GET方法传输的数据量较小,不能大于2kB。

提交表单时,method的默认值是”GET”.

POST

  • 附加形式:通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一些传送到ACTION属性所指的URL地址,用户看不见过程,也不能直观地看到传输过程

  • 参数处理方式 :POST把提交的数据防止在HTTP包中的包体中,不会对汉字进行URL编码处理。POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。但是,数据发送出去,还要服务端解析。POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。

  • 传输数据的大小:POST方法的传输数据量较大,理论上没有大小限制。

  • Http POST 提交数据的四种方式

    • application/x-www-form-urlencoded (默认常用的)
    • multipart/form-data
    • application/json
    • text/xml,现在几乎不用

      HTTP 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据

REQUEST

$_REQUEST变量包含$_GET, $_POST$_COOKIE的内容。

$_REQUEST变量可以用来获取通过“GET”和“POST”这两种方法发送的表单数据。

PHP发送HHTP请求的几种方式

cURL

  • cURL 是一个用来传输数据的工具,支持多种协议,如在 Linux 下用 curl 命令行可以发送各种 HTTP 请求。PHP 的 cURL 是一个底层的库,它能根据不同协议跟各种服务器通讯,HTTP 协议是其中一种。

  • 现代化的 PHP 开发框架中经常会用到一个包,叫做 GuzzleHttp,它是一个 HTTP 客户端,也可以用来发送各种 HTTP 请求,GuzzleHttp 并不依赖 cURL 库,而支持多种发送 HTTP 请求的方式。

stream流的方式

  • 关于 PHP stream 的介绍文章
  • stream_context_create 作用:创建并返回一个文本数据流并应用各种选项,可用于 fopen(), file_get_contents() 等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
  • 以一个post为例

    1234567891011121314151617181920212223
    <?php/** \* Created by PhpStorm. \* User: tanteng \* Date: 2017/7/22 \* Time: 13:48 \*/function post($url, $data){    $postdata = http_build_query(        $data    );    $opts = array('http' =>                      array(                          'method' => 'POST',                          'header' => 'Content-type: application/x-www-form-urlencoded',                          'content' => $postdata                      )    );    $context = stream_context_create($opts);    $result = file_get_contents($url, false, $context);    return $result;}

socket方式

  • 使用套接字建立连接,拼接 HTTP 报文发送数据进行 HTTP 请求。

  • 一个 GET 方式的例子:

    123456789101112131415
    <?php$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);if (!$fp) {    echo "$errstr ($errno)<br />\n";} else {    $out = "GET / HTTP/1.1\r\n";    $out .= "Host: www.example.com\r\n";    $out .= "Connection: Close\r\n\r\n";    fwrite($fp, $out);    while (!feof($fp)) {        echo fgets($fp, 128);    }    fclose($fp);}?>

参考资料

[1] HTTPS 与 SSL 证书概要

[2] 15 张思维导图来快速学习 PHP 语言基础

PHP的表单获取与HHTP请求方式相关推荐

  1. 表单提交和超链接请求传递参数的几种方式

    表单提交和超链接请求传递参数的几种方式 这段时间在使用easy-ui的datagrid,他有自己提交表单的方式,所以就整理整理页面对参数的提交方式: 注:下面代码都已经过测试. 1. HTML提交表单 ...

  2. html如何让a标签提交表单提交,html post请求之a标签的两种用法解析

    这篇文章主要介绍了html post请求之a标签的两种用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧 html post请求之a标签的两种用法 ...

  3. 抓取html表单验证码,如何在jquery中利用表单获取短信验证码

    如何在jquery中利用表单获取短信验证码 发布时间:2021-02-18 15:42:54 来源:亿速云 阅读:88 作者:Leah 这期内容当中小编将会给大家带来有关如何在jquery中利用表单获 ...

  4. 抓取html表单验证码,jquery实现表单获取短信验证码代码

    效果图: 代码如下: jquery表单获取短信验证码代码 $(function(){ //获取短信验证码 var validCode=true; $(".msgs").click ...

  5. 织梦html实时留言,织梦dedecms自定义表单获取留言者的IP地址及留言时间

    设置了自定义表单提交功能 ,最近登录后台发现很多留言,但看不到留言的具体发布时间 . 后来注意到一个细节,每次登陆后台,织梦系统都会记录登陆时间和IP地址,这说明织梦自带IP获取和时间获取. 那么接下 ...

  6. 致远小场景方案之表单获取ERP基础档案数据

    致远小场景方案之表单获取ERP基础档案数据–CAP表单控件引用外部数据源效果展示 需求 致远的CAP4表单,默认是不支持直接连接OA数据库中的表,当然更不支持直接连接外部数据库中的表!如果有CAP4应 ...

  7. 防止form表单提交的几种方式

    1. 背景介绍 在开发项目中肯可能会出现如下情况: 1. 用户的失误操作,多次点击表单提交按钮 2. 由于网速等原因造成页面卡顿,用户重复刷新提交页面 3. 黑客或恶意用户使用postman等工具重复 ...

  8. Form 表单提交的几种方式

    简单的总结一下form表单提交的几种方式: 1.最简单的方式 就用form的submit提交方式,这种提交方式是不需要回调函数的    这种方式最近到一个form提供action路径后台接受就可以 & ...

  9. php表单传值哪几种方式,PHP表单传值的方式有哪些?

    本篇文章主要给大家介绍PHP表单传值的两种方式,一种是通过$_GET变量 .另一种是通过$_POST变量.(相关推荐:<PHP教程>) 下面我们就结合具体的PHP代码示例给大家介绍,PHP ...

最新文章

  1. 【Java Web开发指南】有状态会话Bean(SLSB) 和无状态会话Bean(SFSB)的区别
  2. Boost:基于boost::asio的延迟udp服务器测试程序
  3. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——AlexNet
  4. 物联网设备感染Mirai病毒发起的DDoS攻击
  5. word2vec词向量训练及中文文本类似度计算
  6. 《Linux shell变量总结回顾》RHEL6(转)
  7. word2003怎么做目录与正文的连接
  8. Geek必备神器 - Google眼镜(Google glass)的十大特色
  9. 总结几个 C 语言知识点
  10. atitit.基于bat cli的插件管理系统.doc
  11. Qt_模仿siri语音动画 全平台语音动画
  12. java调用webservice接口 几种方法
  13. EPLAN小知识——添加字体
  14. 300多条MTK工作笔记为你的工作节省一半时间
  15. 计算机2.0培训心得,信息2.0培训心得体会
  16. Promise学习-手写一个promise
  17. js直接打印pdf文件内容
  18. 小白学 Python(1):开篇
  19. SVG排版教程 | 样式背景属性详解与应用
  20. 系统架构师(软考)------网络互联模型与常见的网络协议

热门文章

  1. 【转载】Linux关机命令详解
  2. 解决eclipse和myeclipse不能编译项目的问题
  3. 实现SDI与MDI的转换 (转)
  4. Python中的traceback模块
  5. [导入]常用26句生活用语[英语]
  6. 中反应器体积_实验室规模半连续和连续生物反应器在微生物学和生物技术工艺中的作用...
  7. php更新svn,利用php进行svn更新的php代码及php执行svn更新注意事项
  8. 计算机通信技术用到的文献,计算机技术在通信中的应用与发展
  9. c语言图形库三角形,Flappy Bird C语言实现及C图形库Easyx的使用
  10. android 内部类传值,Android Studio中,从内部类