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数据的三种方法
Oct 09 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
php db类库进行数据库操作
Mar 19 PHP
php Rename 更改文件、文件夹名称
May 24 PHP
PHP 正则表达式常用函数
Aug 17 PHP
php简单实现MVC
Feb 05 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
PHP闭包函数详解
Feb 13 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
微信公众号之主动给用户发送消息功能
Jun 22 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详细彻底学习Smarty
2008/03/27 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
php更新cookie内容的详细方法
2019/09/30 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
javascript web页面刷新的方法收集
2009/07/02 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
js读写json文件实例代码
2014/10/21 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
Element InputNumber计数器的使用方法
2020/07/27 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
批处理与python代码混合编程的方法
2016/05/19 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python实现汉诺塔算法
2021/03/01 Python
python中metaclass原理与用法详解
2019/06/25 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
办公室文书岗位职责
2013/12/16 职场文书
护士自我鉴定总结
2014/03/24 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers