PHP stream_context_create()作用和用法分析


Posted in PHP onMarch 29, 2011

作用:创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
函数原型:resource stream_context_create ([ array $options [, array $params ]] )
用法
例子一:

<?php 
$opts = array( 'http-->array( 
'method'=>"GET", 
'header'=>"Accept-language: en\r\n" . 
"Cookie: foo=bar\r\n" 
) 
); 
$context = stream_context_create($opts); 
/* Sends an http request to 3water.com 
with additional headers shown above */ 
$fp = fopen('https://3water.com', 'r', false, $context); 
fpassthru($fp); 
fclose($fp); 
?>

例子二:
<?php 
$opts = array( 'http-->array( 
'method'=>"GET", 
'header'=>"Accept-language: en\r\n" . 
"Cookie: foo=bar\r\n" 
) 
); 
$context = stream_context_create($opts); 
?> 
You would setup the header this way: 
<?php 
$opts = array( 'http-->array( 
'method'=>"GET", 
'header'=>array("Accept-language: en", 
"Cookie: foo=bar", 
"Custom-Header: value") 
) 
); 
$context = stream_context_create($opts); 
?>

例子三:
<?php 
$opts = array('http' => array('proxy' => 'tcp://127.0.0.1:8080', 'request_fulluri' => true)); 
$context = stream_context_create($opts); 
$data = file_get_contents('https://3water.com', false, $context); 
echo $data; 
?>

例子四:
<?php 
function do_post_request($url, $postdata, $files = null) 
{ 
$data = ""; 
$boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10); 
//Collect Postdata 
foreach($postdata as $key => $val) 
{ 
$data .= "--$boundary\n"; 
$data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n"; 
} 
$data .= "--$boundary\n"; 
//Collect Filedata 
foreach($files as $key => $file) 
{ 
$fileContents = file_get_contents($file['tmp_name']); 
$data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n"; 
$data .= "Content-Type: image/jpeg\n"; 
$data .= "Content-Transfer-Encoding: binary\n\n"; 
$data .= $fileContents."\n"; 
$data .= "--$boundary--\n"; 
} 
$params = array('http' => array( 
'method' => 'POST', 
'header' => 'Content-Type: multipart/form-data; boundary='.$boundary, 
'content' => $data 
)); 
$ctx = stream_context_create($params); 
$fp = fopen($url, 'rb', false, $ctx); 
if (!$fp) { 
throw new Exception("Problem with $url, $php_errormsg"); 
} 
$response = @stream_get_contents($fp); 
if ($response === false) { 
throw new Exception("Problem reading data from $url, $php_errormsg"); 
} 
return $response; 
} 
//set data (in this example from post) 
//sample data 
$postdata = array( 
'name' => $_POST['name'], 
'age' => $_POST['age'], 
'sex' => $_POST['sex'] 
); 
//sample image 
$files['image'] = $_FILES['image']; 
do_post_request("https://3water.com", $postdata, $files); 
?>
PHP 相关文章推荐
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
php+memcache实现的网站在线人数统计代码
Jul 04 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
php微信开发之百度天气预报
Nov 18 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 #PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 #PHP
php中关于普通表单多文件上传的处理方法
Mar 25 #PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 #PHP
PHP学习 变量使用总结
Mar 24 #PHP
优化php效率,提高php性能的一些方法
Mar 24 #PHP
php 代码优化之经典示例
Mar 24 #PHP
You might like
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php缓冲输出实例分析
2015/01/05 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python实现端口转发器的方法
2015/03/13 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Django自定义manage命令实例代码
2018/02/11 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
Python代码注释规范代码实例解析
2020/08/14 Python
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
JPA面试常见问题
2016/11/14 面试题
计算机应用毕业生自荐信
2013/10/23 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
小班下学期评语
2014/05/04 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
如何使用Python实现一个简易的ORM模型
2021/05/12 Python