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相关资料
Oct 09 PHP
php+mysql写的简单留言本实例代码
Jul 25 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
PHP面向对象详解(三)
Dec 07 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
如何使用php生成zip压缩包
Apr 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
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python3内置模块random随机方法小结
2019/07/13 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
天巡全球:Skyscanner Global
2017/06/20 全球购物
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
高中毕业自我鉴定
2013/12/13 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
解除合同协议书
2014/04/17 职场文书
个人校本研修方案
2014/05/26 职场文书
植树节标语
2014/06/27 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
毕业酒会致辞
2015/07/29 职场文书