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 相关文章推荐
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
php获取post中的json数据的实现方法
Jun 08 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
PHP-FPM 的管理和配置详解
Feb 17 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/10/09 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
thinkphp模板继承实例简述
2014/11/26 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python快排算法详解
2019/03/04 Python
python实现按关键字筛选日志文件
2019/12/24 Python
django API 中接口的互相调用实例
2020/04/01 Python
python能自学吗
2020/06/18 Python
Python Map 函数的使用
2020/08/28 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
岗位职责怎么写
2014/03/14 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android