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
加强版phplib的DB类
Mar 31 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
PHP高级OOP技术演示
Aug 27 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
PHP闭包实例解析
Sep 08 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
composer.lock文件的作用
Feb 03 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
用PHP将数据导入到Foxmail
2006/10/09 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
Node.js实现数据推送
2016/04/14 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
python多进程共享变量
2016/04/06 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
python实现银行管理系统
2019/10/25 Python
python文件操作的简单方法总结
2019/11/07 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
资源工程专业毕业生求职信
2014/02/27 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
领导班子整改方案
2014/10/25 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
2014年度工作总结报告
2014/12/15 职场文书