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 相关文章推荐
数据库相关问题
Oct 09 PHP
PHP脚本的10个技巧(7)
Oct 09 PHP
探讨fckeditor在Php中的配置详解
Jun 08 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
基于php中使用excel的简单介绍
Aug 02 PHP
PHP生成唯一订单号
Jul 05 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
ThinkPHP实现分页功能
Apr 28 PHP
搭建自己的PHP MVC框架详解
Aug 16 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
php 的多进程操作实践案例分析
Feb 28 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解决的一个栈的面试题
2014/07/02 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
通过webpack引入第三方库的方法
2018/07/20 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
keras.layer.input()用法说明
2020/06/16 Python
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
银行批评与自我批评
2014/02/10 职场文书
幼教求职信
2014/03/12 职场文书
临床医师个人自我评价
2014/04/06 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
2014年车间工作总结
2014/11/21 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书