PHP 模拟$_PUT实现代码

 更新时间:2010年03月15日 17:01:40   作者:  
PHP里有$_GET,$_POST,但是没有$_PUT,所以如果需要使用它的话,则你不得不自己模拟一下
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采集静态页面并把页面css,img,js保存的方法

    PHP采集静态页面并把页面css,img,js保存的方法

    这篇文章主要介绍了PHP采集静态页面并把页面css,img,js保存的方法,可以实现简单的网页抓取功能,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • PHP 金额数字转换成英文

    PHP 金额数字转换成英文

    找了很久,搜索的关键词总是词不达意似的。
    2010-05-05
  • sphinx增量索引的一个问题

    sphinx增量索引的一个问题

    很早使用coreseek来实现对内容的搜索,并使用主索引+增量索引来实现新发的内容很快能搜索到,使用一直挺稳定。
    2011-06-06
  • php 执行系统命令的方法

    php 执行系统命令的方法

    在一个项目里用到这样的东西,用另外一个服务做了一些事情,生成的文件权限,通过php 无法读取,测试了很多种方式都没能实现,在网上找了下,可以用c写一个代理来实现,本人就实现了一下,果真可以。
    2009-07-07
  • php限制上传文件类型并保存上传文件的方法

    php限制上传文件类型并保存上传文件的方法

    这篇文章主要介绍了php限制上传文件类型并保存上传文件的方法,涉及php针对上传文件的常用操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • php生成mysql的数据字典

    php生成mysql的数据字典

    这篇文章主要为大家详细介绍了php生成mysql的数据字典的相关资料,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 关于PHP转换超过2038年日期出错的问题解决

    关于PHP转换超过2038年日期出错的问题解决

    这篇文章主要给大家介绍了关于PHP转换超过2038年日期出错问题的解决方法,文中给出了详细的解决方法,通过示例代码让大家更容易理解和学习,需要的朋友们下面来一起看看吧。
    2017-06-06
  • PHP多进程编程实例详解

    PHP多进程编程实例详解

    这篇文章主要介绍了PHP多进程编程方法,较为详细的分析了PHP多进程编程的概念、用法、相关函数与使用技巧,需要的朋友可以参考下
    2017-07-07
  • PHP迭代器和迭代的实现与使用方法分析

    PHP迭代器和迭代的实现与使用方法分析

    这篇文章主要介绍了PHP迭代器和迭代的实现与使用方法,结合实例形式分析了PHP迭代器的概念、原理、定义与使用方法,需要的朋友可以参考下
    2018-04-04
  • php获取给定日期相差天数的方法分析

    php获取给定日期相差天数的方法分析

    这篇文章主要介绍了php获取给定日期相差天数的方法,结合具体实例形式分析了2种日期相差天数的计算方法,涉及php日期字符串转换的相关操作技巧,需要的朋友可以参考下
    2017-02-02

最新评论