PHP 模拟$_PUT实现代码


Posted in PHP onMarch 15, 2010

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.ini里的always_populate_raw_post_data设置。

PHP 相关文章推荐
PHP编实现程动态图像的创建代码
Sep 28 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 #PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
Mar 13 #PHP
php 无法载入mysql扩展
Mar 12 #PHP
PHP生成Flash动画的实现代码
Mar 12 #PHP
PHP 引用是个坏习惯
Mar 12 #PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 #PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 #PHP
You might like
PHP $_FILES中error返回值详解
2014/01/30 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
微信小程序入门教程
2016/11/18 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
使用Python生成XML的方法实例
2017/03/21 Python
详解用python实现简单的遗传算法
2018/01/02 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python实现多层感知器MLP(基于双月数据集)
2019/01/18 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
大学生村官事迹材料
2014/01/21 职场文书
计算机专业职业规划
2014/02/28 职场文书
写给医院的感谢信
2015/01/22 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
KTV员工管理制度
2015/08/06 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis