ホームページ >バックエンド開発 >PHPチュートリアル >PHP実践関数マニュアル:stream_context_create()でPOST/GETをシミュレートする
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()
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 独自のフィルター関数を使用