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 include加载文件两种方式效率比较
Aug 08 PHP
PHP 事件机制(2)
Mar 23 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
php数组中删除元素的实现代码
Jun 22 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
php生成RSS订阅的方法
Feb 13 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 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
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
Javascript 两个窗体之间传值实现代码
2009/09/25 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
毕业生学校推荐信范文
2014/05/21 职场文书
大学生求职信
2014/06/17 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
小学中等生评语
2014/12/29 职场文书
工作表扬信范文
2015/01/17 职场文书
迎新生欢迎词
2015/01/23 职场文书
2016银行求职自荐信
2016/01/28 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书