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入门速成(2)
Oct 09 PHP
PHP数据库操作面向对象的优点
Oct 09 PHP
FCKeditor的安装(PHP)
Jan 13 PHP
PHP HTML代码串截取代码
Dec 29 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
Wordpress 相册插件 NextGEN-Gallery 添加目录将中文转为拼音的解决办法
Dec 29 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php cookie 详解使用实例
Nov 03 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
Apr 03 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
js实现开关灯效果
2020/03/30 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python字符串,数值计算
2016/10/05 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
部队万能检讨书
2014/02/20 职场文书
婚前协议书范本两则
2014/10/16 职场文书
创先争优活动个人总结
2015/03/04 职场文书
观后感格式
2015/06/19 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
Python实现简单得递归下降Parser
2022/05/02 Python
Java实现简单小画板
2022/06/10 Java/Android