php 输入输出流详解及示例代码


Posted in PHP onAugust 25, 2016

最近在学习http协议!为了更好理解http协议,看了一下nodejs的http的模块!感觉收获还是挺多的。比如我用http的request发一个请求:

var options = {
 host: 'localhost',
 port: 80,
 path: '/backbone/data.php',
 method: 'POST'
};


var req = http.request(options, function(res) {
 console.log('STATUS: ' + res.statusCode);
 console.log('HEADERS: ' + JSON.stringify(res.headers));
 res.setEncoding('utf8');
 res.on('data', function (chunk) {
  console.log('BODY: ' + chunk);
 });
});
// write data to request body
req.end('name=liuzhang&age=28');

上述代码的意思是发送数据'name=liuzhang&age=28',回调是响应的对象,把服务器响应的数据打印出来!

data.php 代码是

print_r($_POST);

打印传过来的数据!

在命令行运行的结果是

php 输入输出流详解及示例代码

可以看到Array是空,就是$_POST 没有数据,一开始我以为是数据没有传过来!但是我把后端data.php 改成

echo file_get_contents("php://input");

php 输入输出流详解及示例代码

接收到了传过来的数据!

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。

$_POST仅当数据按 application/x-www-form-urlencoded 类型提交时才能得到,form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。 当action为post时候,浏览器把form数据封装到http body中,然后发送到server。

当我们把发送options改成

var options = {
 host: 'localhost',
 port: 80,
 path: '/backbone/data.php',
 method: 'POST',
 headers : {'Content-Type': 'application/x-www-form-urlencoded'}
};

加上一个headers content-type 就可以用$_POST 接收到数据! 如果不是这种的form类型,你就可以用原始的输入接收数据!

以上就是对PHP 输入输出流做的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

PHP 相关文章推荐
ajax php 实现写入数据库
Sep 02 PHP
使用PHP计算两个路径的相对路径
Jun 14 PHP
解析PHP中的unset究竟会不会释放内存
Jul 18 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
php常量详细解析
Oct 27 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 #PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 #PHP
PHP sleep()函数, usleep()函数
Aug 25 #PHP
PHP页面间传递值和保持值的方法
Aug 24 #PHP
PHP中explode函数和split函数的区别小结
Aug 24 #PHP
php处理单文件、多文件上传代码分享
Aug 24 #PHP
PHP简单创建压缩图的方法
Aug 24 #PHP
You might like
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
JavaScript 异步调用
2017/10/25 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
python绘图库Matplotlib的安装
2014/07/03 Python
Python运算符重载用法实例
2015/05/28 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
Python 高效编程技巧分享
2020/09/10 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
简述数组与指针的区别
2014/01/02 面试题
小班开学寄语
2014/04/04 职场文书
技术股东合作协议书
2014/12/02 职场文书
世界红十字日活动总结
2015/02/10 职场文书
生产设备维护保养制度
2015/08/06 职场文书
Redis如何实现分布式锁
2021/08/23 Redis