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下mysql数据库操作类(改自discuz)
Jul 03 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
PHP静态文件生成类实例
Nov 29 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
PHP使用memcache缓存技术提高响应速度的方法
Dec 26 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 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
hessian 在PHP中的使用介绍
2010/12/13 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
Javascript的&&和||的另类用法
2014/07/23 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
Python反射用法实例简析
2017/12/22 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
python批量下载抖音视频
2019/06/17 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
python中upper是做什么用的
2020/07/20 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
python解包用法详解
2021/02/17 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
C语言如何决定使用那种整数类型
2016/11/26 面试题
儿科主治医生个人求职信
2013/09/23 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
节约能源标语
2014/06/17 职场文书
收入证明范本
2015/06/12 职场文书
董事长致辞
2015/07/29 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL