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

2015-01-24信息快讯网

这篇文章主要介绍了PHP中模拟处理HTTP PUT请求的例子,PUT请求会把消息本体中的消息发送到一个URL,跟POST类似,需要的朋友可以参考下

关于HTTP PUT详细介绍请参阅此文:http://www.jb51.net/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使用header()输出图片缓存实例
PHP实现服务器状态监控的方法
PHP里8个鲜为人知的安全函数分析
php实现MySQL数据库备份与还原类实例
两个php日期控制类实例
php生成shtml类用法实例
PHP实现抓取HTTPS内容
php生成html文件方法总结
PHP实现将HTML5中Canvas图像保存到服务器的方法
使用PHP Socket 编程模拟Http post和get请求
php中HTTP_REFERER函数用法实例
php中filter_input函数用法分析
PHP中Header使用的HTTP协议及常用方法小结
php之curl实现http与https请求的方法
PHP中的output_buffering详细介绍
php输入流php://input使用浅析
php.ini save_handler 修改不生效的解决办法
ThinkPHP之用户注册登录留言完整实例
合并ThinkPHP配置文件以消除代码冗余的实现方法
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Eclipse的PHP插件PHPEclipse安装和使用
php多任务程序实例解析
PHP缓存机制Output Control详解
PHP关于htmlspecialchars、strip_tags、addslashes的解释
PHPMailer发送HTML内容、带附件的邮件实例
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
php对包含html标签的字符串进行截取的函数分享
php下获取http状态的实现代码
php实现httpclient类示例
xss防御之php利用httponly防xss攻击
php获取表单中多个同名input元素的值
php中调用其他系统http接口的方法说明
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
实现获取http内容的php函数分享
©2014-2024 dbsqp.com