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框架Phpbean说明
Jan 10 PHP
轻松修复Discuz!数据库
May 03 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
php实现遍历多维数组的方法
Nov 25 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 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
我的论坛源代码(八)
2006/10/09 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
个人评价范文分享
2014/01/11 职场文书
文科教师毕业的自我评价
2014/01/16 职场文书
商场促销活动总结
2014/07/10 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
迎国庆主题班会
2015/08/17 职场文书
校长新学期寄语2016
2015/12/04 职场文书