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
如何分别全角和半角以避免乱码
Oct 09 PHP
php 动态添加记录
Mar 10 PHP
PHP多个版本的分析解释
Jul 21 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 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 参数过滤、数据过滤详解
2015/10/26 PHP
PHP 微信支付类 demo
2015/11/30 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
JS 判断代码全收集
2009/04/28 Javascript
图解js图片轮播效果
2015/12/20 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Python中datetime模块参考手册
2017/01/13 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
替换python字典中的key值方法
2018/07/06 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
小学校园广播稿集锦
2014/10/04 职场文书
护理医院见习报告
2014/11/03 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
银行自荐信怎么写
2015/03/05 职场文书
开天辟地观后感
2015/06/09 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
Python函数中apply、map、applymap的区别
2021/11/27 Python