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 相关文章推荐
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
php switch语句多个值匹配同一代码块应用示例
Jul 29 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
php+mysql数据库查询实例
Jan 21 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
php封装一个异常的处理类
Jun 08 PHP
PHP rmdir()函数的用法总结
Jul 02 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
Laravel定时任务的每秒执行代码
Oct 22 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写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
List Installed Software Features
2007/06/11 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
python中sys.argv参数用法实例分析
2015/05/20 Python
python实现定时发送qq消息
2019/01/18 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
python中reload重载实例用法
2020/12/15 Python
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
最新计算机专业自荐信
2013/10/16 职场文书
大学生表扬信范文
2014/01/09 职场文书
硕士生工作推荐信
2014/03/07 职场文书
员工教育培训协议书
2014/09/27 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
css3属性选择器 “~”(波浪号) “,”(逗号) “+”(加号)和 “>”(大于号)
2022/04/19 HTML / CSS