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面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
PHP 采集程序中常用的函数
Dec 09 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
基于PHP开发中的安全防范知识详解
Jun 06 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
php实现httpclient类示例
Apr 08 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
Jan 21 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数组是否为索引数组的实现方法
2013/06/13 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
flash遮住div问题的正确解决方法
2014/02/27 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
Python 对象中的数据类型
2017/05/13 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
python设置环境变量的作用和实例
2019/07/09 Python
flask 实现token机制的示例代码
2019/11/07 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
python如何调用java类
2020/07/05 Python
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
大四学年自我鉴定
2013/11/13 职场文书
物流仓管员工作职责
2014/01/06 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
建筑管理专业求职信
2014/07/28 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书