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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 PHP
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
php数组总结篇(一)
Sep 30 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
PHP网页缓存技术优点及代码实例
Jul 29 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图片上传程序
2008/03/27 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
django 实现电子支付功能的示例代码
2018/07/25 Python
python3判断url链接是否为404的方法
2018/08/10 Python
详解Python装饰器
2019/03/25 Python
python递归法解决棋盘分割问题
2019/07/17 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python绘制雪景图
2019/12/16 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
个人教师自我评价范文
2013/12/02 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
付款证明模板
2015/06/19 职场文书
采购员工作总结范文
2015/08/12 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
Django实现聊天机器人
2021/05/31 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers