ホームページ >php教程 >php手册 >PHP stream_context_create() 関数と使用法の分析

PHP stream_context_create() 関数と使用法の分析

WBOY
WBOYオリジナル
2016-06-13 12:11:101731ブラウズ

機能: テキストデータストリームの作成と返却、fopen()やfile_get_contents()などの処理のタイムアウト設定、プロキシサーバー、リクエストメソッド、ヘッダ情報の設定などの特殊な処理に使用できます。
関数プロトタイプ: resource stream_context_create ([ array $options [, array $params ]] )
使用法
例 1:

コピーコード コードは次のとおりです。


$opts = array( 'http-->array(
'method'=>) ;"GET ",
'header'=>"受け入れ言語: enrn" .
"Cookie: foo=barrn"
)
);
$context = stream_context_create($) opts);
/* 上記の追加ヘッダーを使用して http リクエストを www.jb51.net
に送信します */
$fp = fopen('http://www.jb51.net', 'r ', false , $context);
fclose($fp);


;

コードをコピーします

コードは次のとおりです: $opts = array( 'http- ->array(

'メソッド'=>"GET",
'ヘッダー'=>"受け入れ言語: enrn" .
"Cookie: foo=barrn"
)
);
$context = stream_context_create($opts);
?>
次のようにヘッダーを設定します。
$opts = array( 'http -->array(
'method'=>"GET",
'header'=>array("Accept- language: en",
"Cookie: foo=bar",
"Custom-Header : value")
)
);
$context = stream_context_create($opts)>



例3:



コードをコピー

コードは次のとおりです: $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);

?>例 4:




コードをコピー


コードは次のとおりです。
関数do_post_request($url, $postdata, $files = null ) { $data = "" $boundary = "----------------- ----".substr(md5(rand( 0,32000)), 0, 10); //ポストデータを収集

foreach($postdata as $key => $val)

{
$data .= "--$boundaryn ";
$data .= "Content-Disposition: form-data; name="".$key.""nn".$val."n";
}
$data .= " --$boundaryn";
// ファイルデータを収集
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/jpegn";
$data .= "Content-Transfer-Encoding: binarynn";
$data .= $fileContents."n" ;
$data .= "--$ 境界--n"
}
$params = array('http' => array(
'method' => 'POST' ,
'header' => 'Content -Type: multipart/form-data; border='.$boundary,
'content' => $data
)); = stream_context_create($params);
$fp = fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("$url の問題, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("$url からのデータ読み取りの問題, $php_errormsg");
}
return $response;
}
//データを設定します (この例では post から)
// サンプル データ
$postdata = array(
'名前' => $_POST[ '名前'],
'年齢' => $_POST['年齢'],
'性別' => $_POST['性別']
);
//サンプル画像
$files['image'] = $_FILES['image'];
do_post_request("http://www.jb51.net", $postdata, $ファイル);
?>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。