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分页函数
Jul 08 PHP
如何使用PHP往windows中添加用户
Dec 06 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
PHP 面向对象 PHP5 中的常量
May 05 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
基于initPHP的框架介绍
Apr 18 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php抓取https的内容的代码
2010/04/06 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
event.srcElement+表格应用
2006/08/29 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
python字典的常用操作方法小结
2016/05/16 Python
Python中的字符串替换操作示例
2016/06/27 Python
使用Python 统计高频字数的方法
2019/01/31 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
办公室主任个人总结
2015/02/28 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
关于迟到的检讨书
2015/05/06 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
Java Dubbo框架知识点梳理
2021/06/26 Java/Android