ホームページ >バックエンド開発 >PHPチュートリアル >PHP実践関数マニュアル:stream_context_create()でPOST/GETをシミュレートする

PHP実践関数マニュアル:stream_context_create()でPOST/GETをシミュレートする

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:33:19868ブラウズ

PHP 実践関数マニュアル: stream_context_create() は POST/GET をシミュレートします

場合によっては、サーバー側で POST/GET やその他のリクエストをシミュレートする必要があります。つまり、PHP プログラムにシミュレーションを実装する必要があります。言い換えれば、PHP プログラムで配列が与えられた場合、この配列を別のアドレスに POST/GET するにはどうすればよいでしょうか?もちろん、CURL を使用すると簡単ですが、CURL ライブラリを使用しない場合はどうなるでしょうか。実は、PHP には関連する関数がすでに実装されており、その関数が次に説明する stream_context_create() です。

コードを直接表示します。これが最良の方法です:

$data = array(	'foo'=>'bar', 	'baz'=>'boom', 	'site'=>'www.lai18.com', 	'name'=>'lai18'); 	$data = http_build_query($data); //$postdata = http_build_query($data);$options = array(	'http' => array(		'method' => 'POST',		'header' => 'Content-type:application/x-www-form-urlencoded',		'content' => $data		//'timeout' => 60 * 60 // 超时时间(单位:s)	));$url = "http://www.lai18.net/";$context = stream_context_create($options);$result = file_get_contents($url, false, $context);echo $result;


http://www.lai18.com コードは次のとおりです:

$data = $_POST;echo '<pre class="brush:php;toolbar:false">';print_r( $data );echo '
';



実行結果は次のとおりです:

Array(    [foo] => bar    [baz] => boom    [site] => www.lai18.com    [name] => lai18)



説明する重要なポイント (参考: http://www.lai18.com/content/425476.html):

1. 上記のプログラムでは http_build_query() 関数が使用されています。ストリームを参照)、ファイル システムも使用できます。これは、ファイル ハンドルを使用せずにファイル名を直接操作する file_get_contents、file_put_contents、readfile などの関数でより便利です。 stream_context_create へのヘッダーの追加は関数の一部にすぎません。プロキシやタイムアウトなども定義できます。これにより、Web にアクセスする機能は、curl よりも弱くなります。

4. stream_context_create() の関数: テキストデータストリームを作成して返し、fopen() のタイムアウト設定、プロキシサーバー、リクエストメソッド、ヘッダー情報の設定などの特殊な処理に使用できます。 file_get_contents() およびその他のプロセス。

5

2PHP関数の補完完了: error_reporting()

3 PHP関数の完了: array_splice()



4 PHP関数の完了: isset()


5 PHP関数の完了: array_multisort()


6 PHP 関数の完了: urlencode()


7 PHP 関数の完了: preg_match()


8 PHP 関数の完了: header()


9 PHP 関数の完了: getenv()


10 PHP 関数の完了: list ()


11 PHP 関数の完了: mysql_num_rows()


12 PHP 関数の完了:explode()


13 PHP 関数の完了: mysql_fetch_array()


14 PHP 関数の完了:number_format()


15 PHP 関数の完了: mysq l_query()


16PHP 関数の完了: empty()


17PHP 関数の完了: call_user_func()


18PHP 関数の完了: parse_url()


19PHP 関数の完了: import_request_variables()


20PHP関数の完了: ImageCopyResamples()


21PHP関数の完了: HTMLタグstrip_tags()


22PHP関数の完了: 配列構造と内容の出力 var_dump()


23PHP関数の完了: var_export()


24ペソ関数の完了: 変数が数値であるかどうかを判断します is_numeric()


25 PHP 関数の完了: http_build_query() は URL 文字列を構築します


26PHP 実践関数マニュアル: stream_context_create() は POST/GET をシミュレートします


27PHP 関数の完了: shuffle () 配列のランダムな要素をいくつか取得します


28 PHP 関数の完了: session_id()


29 PHP 関数の完了: nl2br() および nl2p() 関数


30 PHP 関数の完了: session_name()


31php スケジュールされたタスクのignore_user_abort関数を実装する方法


32 PHPでerror_log()関数を使用する方法


33PHPユーティリティ function-array_change_key_case() は配列のキーを大文字と小文字に変換します


34PHPユーティリティfunction-function_exists() は、関数が定義されているかどうかを検出します


35PHP ユーティリティ function-array_intersect() は、2 つ以上の配列の交差を計算します


36PHP ユーティリティ function-array_diff() は、配列間の差分を計算します


37PHP ユーティリティfunction-compact() 既知の変数を変換します 配列に変換します


38PHP ユーティリティ function-extract() は配列を対応するキーと値のペアの変数に変換します


39PHP ユーティリティ function-array_count_values() は要素の出現数をカウントします配列内


40PHP ユーティリティ function-getopt() from コマンドラインパラメータリストからオプションを取得


41 PHP 実践関数 文字列関数の分類


42 データ検証に PHP 独自のフィルター関数を使用



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