PHP中模拟处理HTTP PUT请求的例子


Posted in PHP onJuly 22, 2014

关于HTTP PUT详细介绍请参阅此文:https://3water.com/article/52515.htm。

PHP里有$_GET,$_POST,但是没有$_PUT,所以如果需要使用它的话,则你不得不自己模拟一下:

 $_PUT = array();

if ('PUT' == $_SERVER['REQUEST_METHOD']) {

     parse_str(file_get_contents('php://input'), $_PUT);

 }

通过php://input得到的数据是raw data,所以需要用parse_str解析一下。

不过需要说明的是,当表单是enctype="multipart/form-data"类型的时候(就是上传文件那种类型),这种方法是无效的(此时 php://input为空),一旦PHP发现请求的Content-Type是multipart/form-data,就会无条件的代你处理表单数据,然后保存到$_FILES里,此时无法得到raw data,只能用一些偏门方法

以apache为例,修改httpd.conf(为了使用RequestHeader语法,请先激活header模块):

<Location "/demo.php">

     RequestHeader set Content-Type foobar

</Location>

通过重置Content-Type请求头为foobar(只要不是multipart/form-data即可),此时php://input就有数据了,不过原本应有的$_FILES数据却不存在了,所以基本上只有演示上的意义,如果想得到raw data,只能自己根据数据生成,在PEAR里有类似的实现:HTTP_Request2_MultipartBody。

浏览器一般只允许使用GET/POST方法,虽然可以通过JS来发送PUT方法,但是还得编写代码,相对而言,使用命令行下的CURL命令则显得方便很多,在开发测试时很有用,所以学习一下还是必要的:

curl -X PUT http://www.domain.com/demo.php -d "id=1" -d "title=a"

这样就会通过PUT方法发送id, title数据,测试时demo.php的代码就类似上面的php://input。
PHP 相关文章推荐
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
PHP判断是否有Get参数的方法
May 05 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
php源码的安装方法和实例
Sep 26 PHP
PHP策略模式写法
Apr 01 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 #PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 #PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 #PHP
async和DOM Script文件加载比较
Jul 20 #PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 #PHP
php多任务程序实例解析
Jul 19 #PHP
php实现斐波那契数列的简单写法
Jul 19 #PHP
You might like
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php跨服务器访问方法小结
2015/05/12 PHP
PHP中的session安全吗?
2016/01/22 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
深入浅析Python中的yield关键字
2018/01/24 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
就业自荐信
2013/12/04 职场文书
财务主管自我鉴定
2014/01/17 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
《去年的树》教学反思
2014/04/11 职场文书
4s店活动策划方案
2014/08/25 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
小学生思想品德评语
2014/12/31 职场文书
教师岗位职责范本
2015/04/02 职场文书
七年级语文教学反思
2016/03/03 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python