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 相关文章推荐
利用 window_onload 实现select默认选择
Oct 09 PHP
mysql 全文搜索 技巧
Apr 27 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
PHP文件缓存类实现代码
Oct 26 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php中大括号作用介绍
2012/03/22 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
Python中文字符串截取问题
2015/06/15 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
Python基本socket通信控制操作示例
2019/01/30 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
创建卫生先进单位实施方案
2014/03/10 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
硕士论文致谢范文
2015/05/14 职场文书
cf战队宣传语
2015/07/13 职场文书
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技