您的位置:首页 > 编程语言 > PHP开发

PHP stream_context_create()作用…

2012-11-29 14:26 585 查看
创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。

详细出处参考:/article/1269091.html

作用:创建并返回一个文本数据流并应用各种选项,可用于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);

$fp = fopen('http://www.jb51.net', '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('http://www.jb51.net', 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("http://www.jb51.net", $postdata,
$files);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: