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数组应用之比较两个时间的相减排序
Aug 18 PHP
PHP 采集程序 常用函数
Dec 18 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
php在页面中调用fckeditor编辑器的方法
Jun 10 PHP
PHP测试程序运行时间的类
Feb 05 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
PHP查询分页的实现代码
Jun 09 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 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 strtotime函数详解
2009/12/18 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
php获取域名的google收录示例
2014/03/24 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery 选择器(61种)整理总结
2016/09/26 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
python PIL模块与随机生成中文验证码
2016/02/27 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
矫正人员思想汇报
2014/01/08 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
勾股定理课后反思
2014/04/26 职场文书
学校班班通实施方案
2014/06/11 职场文书
关于运动会的广播稿(10篇)
2014/09/12 职场文书
出国留学单位推荐信
2015/03/26 职场文书
工程进度款催款函
2015/06/24 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
入党申请书怎么写?
2019/06/21 职场文书