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 Rename 更改文件、文件夹名称
May 24 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
php对关联数组循环遍历的实现方法
Mar 13 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
PHP实现添加购物车功能
Mar 06 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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将会员数据导入到ucenter的代码
2010/07/18 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现的生成word文档功能示例
2019/08/23 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
内部类的定义、种类以及优点
2013/10/16 面试题
国际贸易专业个人求职信格式
2014/02/02 职场文书
年终总结会议主持词
2014/03/17 职场文书
租房协议书怎么写
2014/04/10 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python