PHP でポスト リクエスト データの送信をシミュレートするには、curl 関数を使用します。必要な方は参考にしてください。
注:curl 関数は php ではデフォルトでサポートされていません。curl 関数を使用する必要がある場合は、php_curl.dll を見つけてその前にある「;」を削除する必要があります。
例1
コードは次のとおりです | コードをコピー |
$uri = "http://tanteng.duapp.com/test.php"; //パラメータ array $data = array ( 'name' => 'taneng' // 'password' => 'password' ); $ch =curl_init (); // print_r($ch) ; curl_setopt ( $ch, CURLOPT_URL, $uri ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_seトップ ( $ ch, CURLOPT_POSTFIELDS, $data ) ; $return =curl_exec ( $ch ); curl_close ( $ch ); print_r($return);
PHP ページのリモートサーバーを受け入れる:
if( isset($_POST['name'])){ if(!empty($_POST['name'])){ echo 'Hello,',$_POST['name'].'! '; } } ?>
|
例 2
CURL を使用して POST リクエストをシミュレートし、郵便番号と住所を取得します
完全なコード:
コードは次のとおりです | コードをコピーします |
#!/usr/local/php/ bin/php < ?php $runtime = 新しいランタイム (); $runtime->start (); $cookie_jar = tempnam('/tmp','cookie');
$filename = $argv[ 1]; $start_num= $argv[2]; $end_num = $argv[3];
for($i=$start_num; $i<$end_num; $i++ ){ $zip = sprintf ('6s', $ i);
$ field_post = array ( ' 郵便番号 '= & gt; $ zip, ' queryKind '= & gt; 2, ' reQCode '= & gt;' ',' ' search_button.x'=>37, 'search_button.y'=>12 );
$fields_string = http_build_query ($fields_post, '&' ); $ch = curl_init(); curl_setopt($ ch, CURLOPT_URL, "URL?reqCode=gotoSearch&queryKind=2&postcode=".$zip); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); カール_setopt($ch, CURLOPT_POST , true ); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120 ); curl_setopt($ch, CURLOPT_REFERER, $refer ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers_login ); curl_setopt ($ch 、curlopt_ cookiefile、$ cookie_jar);通常の Post リクエストを送信します curl_setopt( $ch, CURLOPT_POSTFIELDS, $fields_string );
$data =curl_exec($ch); preg_match_all('/id="table1">[s]*? |
[s]*?[sS]*? | [s]*?
/', $data, $matches); if (!$ handle = fopen($filename, ' A+')) {' 'c a a a a a $ Filename "; echo" n ";
exit;
}
if (fwrite ($ handle, $matches [0] [1]) == false {echo "ファイル$ filename" ));return((float)$usec+(float)$sec);
usec,$sec , $sec) & gt; ();
}
関数 start () { $ this- & gt; = $ this-> get_microtime (); Return ($ this-& gt; Stoptime- $this->StartTime);
}
}
$runtime->stop ();
$con = '処理時間'.$runtime->spent().'秒'; echo '処理時間'.$runtime->spent().'秒';
POST リクエストをシミュレートしてデータを送信したり、ファイルをアップロードします。
.
コードは次のとおりです | コードをコピーします |
http://www.a.com/a.php
POST リクエストを送信します
function execUpload(){
$file = '/doucment/Readme.txt'; $ch =curl_init(); $post_data = array( 'loginfield' => 'username', 'ユーザー名' = > 'ybb', 'パスワード' => '123456', 'ファイル' => '@d:usrwwwtranslatedocumentReadme.txt' ); curl_setopt($ch, CURLOPT_HEADER, false) ; //有効にする タイプ: application/x-www-form-urlencoded の通常の POST リクエストが、フォーム送信と同様に送信されます。 curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch,CURLOPT_BINARYTRANSFER,true); curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data); $info=curl_exec($) ch); curl_close($ch); print_r($info);
}2.http://www.b.com /handleUpload.phpfunction handleUpload(){print_r($_POST) ); echo '===ファイルアップロード情報:'; print_r($_FILES); }
|
■cURL function
■curl_close — cURL セッションを閉じる ■curl_copy_handle — cURL ハンドルをコピーおよびそのすべてのオプション
■curl_errno — 最後のエラー番号を返します
■curl_error — 現在のセッションの最新のエラーを保護する文字列を返します
■curl_exec — cURL セッションを実行します
■curl_getinfo — cURL 接続リソース ハンドルに関する情報を取得します
■ curl_init — cURL セッションを初期化します
■curl_multi_add_handle — 個別の Curl ハンドルを Curl バッチ セッションに追加します
■curl_multi_close — cURL ハンドルのグループを閉じます
■curl_multi_exec — 現在の cURL ハンドルのサブ接続を実行します
■curl_multi_getcontent — CURLOPT_RETURNTRANSFER の場合が設定されている場合、フェッチされた出力のテキスト ストリームを返します
■curl_multi_info_read — 現在解析されている cURL に関連するトランスポート情報を取得します
■curl_multi_init — 新しい cURL バッチ ハンドルを返します
■curl_multi_remove_handle — Curl バッチ ハンドル リソース内のハンドル リソースを削除します
■ curl_multi_select — すべての cURL バッチでアクティブな接続を待機します
■curl_setopt_array — cURL 転送セッション バッチのオプションを設定します
■curl_setopt — cURL 転送オプションを設定します
■curl_version — cURL バージョン情報を取得します
http://www.bkjia.com/PHPjc/444612.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444612.html技術記事 PHP でポスト リクエスト データの送信をシミュレートするには、curl 関数を使用します。以下に、ポスト リクエスト データの送信をシミュレートするいくつかの例を示します。必要な方は参考にしてください。 注:...