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 相关文章推荐
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php从数据库中获取数据用ajax传送到前台的方法
Aug 20 PHP
php修改word的实例方法
Nov 17 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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
python实现socket客户端和服务端简单示例
2014/02/24 Python
python实现统计代码行数的方法
2015/05/22 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
python 递归相关知识总结
2021/03/03 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
.net开发工程师面试题
2014/02/25 面试题
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
高中运动会广播稿
2014/09/16 职场文书
死亡证明书样本说明
2014/10/18 职场文书
2015年见习期工作总结
2014/12/12 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
社区文明倡议书
2015/04/28 职场文书