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导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
php二维数组用键名分组相加实例函数
Nov 06 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
PHP字符串和十六进制如何实现互相转换
Jul 16 PHP
关于PHP求解三数之和问题详析
Nov 09 PHP
php去除deprecated的实例方法
Nov 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显示MySQL数据的三种方法
2008/06/05 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
JavaScript 数组中最大最小值
2016/06/05 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
详解jQuery事件
2017/01/13 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
python抓取网页内容示例分享
2014/02/24 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
Django保护敏感信息的方法示例
2019/05/09 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
Python中的全局变量如何理解
2020/06/04 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
大学生活动策划方案
2014/02/10 职场文书
仓库文员岗位职责
2014/04/06 职场文书
工商管理专业自荐信
2014/06/03 职场文书
初级党校心得体会
2014/09/11 职场文书
公司人事任命通知
2015/04/20 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
社区党支部承诺书
2015/04/29 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书