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 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
轻松修复Discuz!数据库
May 03 PHP
PHP XML数据解析代码
May 26 PHP
关于php循环跳出的问题
Jul 01 PHP
试用php中oci8扩展
Jun 18 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
详解Laravel框架的依赖注入功能
May 27 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
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
js 蒙版进度条(结合图片)
2010/03/10 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
jquery中加载图片自适应大小主要实现代码
2013/08/23 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
利用Python开发实现简单的记事本
2016/11/15 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
使用python 3实现发送邮件功能
2018/06/15 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
医药专业推荐信
2013/11/15 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
优秀教师事迹简介
2014/02/02 职场文书
社团招新策划书
2014/02/04 职场文书
技能比赛获奖感言
2014/02/14 职场文书
节约用电倡议书
2015/04/28 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
详解Python函数print用法
2021/06/18 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS