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的安全
Oct 09 PHP
php的大小写敏感问题整理
Dec 29 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 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
DIY实用性框形天线
2021/03/02 无线电
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
php实现对象克隆的方法
2015/06/20 PHP
PHP实现微信退款功能
2018/10/02 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
Django2.1.3 中间件使用详解
2018/11/26 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
医院总经理岗位职责
2014/02/04 职场文书
出差报告怎么写
2014/11/06 职场文书
预备党员考察意见范文
2015/06/01 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python