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 相关文章推荐
使用PHP制作新闻系统的思路
Oct 09 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
ThinkPHP CURD方法之where方法详解
Jun 18 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 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
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
yii上传文件或图片实例
2014/04/01 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
升学宴主持词
2014/04/02 职场文书
小学生手册家长评语
2014/04/16 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
3分钟演讲稿
2014/04/30 职场文书
水电站项目建议书
2014/05/12 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
2014年工程工作总结
2014/11/25 职场文书
硕士学位申请报告
2015/05/15 职场文书
毕业典礼主持词
2015/06/29 职场文书
礼仪培训心得体会
2016/01/22 职场文书
python 如何用terminal输入参数
2021/05/25 Python