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
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
php xml文件操作代码(一)
Mar 20 PHP
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
php获取json数据所有的节点路径
May 17 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
Adnroid 微信内置浏览器清除缓存
Jul 11 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
PHP中16个高危函数整理
Sep 19 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动态图像的创建
2006/10/09 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
Python工程师面试题 与Python Web相关
2016/01/14 Python
python实现装饰器、描述符
2018/02/28 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
python进度条显示之tqmd模块
2020/08/22 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
简短的公司员工自我评价分享
2013/11/13 职场文书
医药专业推荐信
2013/11/15 职场文书
司法助理专业自荐书
2014/06/13 职场文书
售后客服个人自我评价
2014/09/14 职场文书
大班上学期个人总结
2015/02/13 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
Vue接口封装的完整步骤记录
2021/05/14 Vue.js
nginx共享内存的机制详解
2022/03/21 Servers