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 批量更新网页内容实现代码
Jan 05 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
PHP的PDO操作简单示例
Mar 30 PHP
PHP序列化/对象注入漏洞分析
Apr 18 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
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
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
javascript的函数
2007/01/31 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
Move.js入门
2017/02/08 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python简单程序读取串口信息的方法
2015/03/13 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
python 表格打印代码实例解析
2019/10/12 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
python实现超级马里奥
2020/03/18 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
如何写辞职书
2015/02/26 职场文书
贷款收入证明格式
2015/06/24 职场文书
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android