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和XSL stylesheets转换XML文档
Oct 09 PHP
用Flash图形化数据(二)
Oct 09 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
php curl post 时出现的问题解决
Jan 30 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
微信支付开发维权通知实例
Jul 12 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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获取网络文件的实现代码
2010/01/01 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
微信js-sdk地理位置接口用法示例
2016/10/12 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
大学毕业登记表自我鉴定
2013/10/09 职场文书
公司接待方案
2014/03/08 职场文书
银行求职自荐信
2014/06/30 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
六查六看六改心得体会
2014/10/14 职场文书
赡养老人协议书范本
2015/08/06 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis