php CURLポストの使用

WBOY
WBOYオリジナル
2016-06-23 14:30:531053ブラウズ

cURL は、URL 構文を使用してファイルやデータを転送するツールです。HTTP、FTP、TELNET などの多くのプロトコルをサポートしています。最も優れた点は、PHP が cURL ライブラリもサポートしていることです。この記事では、cURL の高度な機能と、それを PHP で使用する方法を紹介します。

なぜ cURL を使用するのですか?

はい、他の方法で Web コンテンツを取得できます。ほとんどの場合、私は怠惰になりたいので、単純な PHP 関数を使用するだけです。

ただし、このアプローチには柔軟性と効果的なエラー処理が欠けています。さらに、Cookie の処理、検証、フォームの送信、ファイルのアップロードなど、一部の難しいタスクを完了するために使用することはできません。

引用:
cURL は、さまざまなプロトコルとオプションをサポートし、URL リクエストに関連するさまざまな詳細を提供できる強力なライブラリです。

基本構造

さらに複雑な関数を学ぶ前に、PHP で cURL リクエストを確立するための基本的な手順を見てみましょう:

1 初期化

2 変数を設定する

3 実行して結果を取得する

4 cURL をリリースするハンドル

以下は引用された内容です:

// 1. 初期化
$ch =curl_init();
// 2. URL を含むオプションの設定
curl_setopt($ch, CURLOPT_URL, "http://www. nettuts .com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. HTML ドキュメントのコンテンツを実行して取得します
$output =curl_exec($ch);
/ / 4. Curl ハンドルを解放します
curl_close($ch);

エラーをチェックします

エラーをチェックするステートメントを追加できます (これは必須ではありません):

$output =curl_exec($ch) ;
if ( $output === FALSE) {
echo "cURL Error: " .curl_error($ch);
}

比較するときは、「== FALSE」ではなく「=== FALSE」を使用することに注意してください。 「。」空の出力とブール値 FALSE を区別する必要があるため、後者が実際のエラーです。

POST メソッドを使用してデータを送信します

GET リクエストを開始するとき、データは「クエリ文字列」を通じて URL に渡すことができます。たとえば、Google で検索する場合、検索キーは URL のクエリ文字列の一部です:

http://www.google.com/search?q=nettuts

この場合、シミュレーションに cURL は必要ない可能性があります。 。この URL を「file_get_contents()」にスローすると、同じ結果が得られます。

ただし、一部の HTML フォームは POST メソッドを使用して送信されます。このフォームが送信されると、データはクエリ文字列ではなく HTTP リクエスト本文 (リクエストボディ) を通じて送信されます。たとえば、CodeIgniter フォーラム フォームを使用する場合、どのようなキーワードを入力しても、常に次のページに POST されます:

http://codeigniter.com/forums/do_search/

PHP スクリプトを使用して、この URL の質問をシミュレートします。まず、POST データを受け入れて表示できる新しいファイルを作成します

//テストには discuzX2.0 を使用します

//一時的な Cookie ファイルを作成します

$cookiefile = tempnam('./temp' , ' cookie');

$url = 'http://dx/member.php?mod=logging&action=login&loginsubmit=yes';

$post_data = array(

'loginfield' => 'ユーザー名',

'ユーザー名' => 'ybb',

'パスワード' => '123456',

);

$ch =curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// データを投稿しています!

curl_setopt($ch, CURLOPT_POST, 1);

//ポスト変数を追加します

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

//Cookie ファイルを保存します

curl_setopt($ch, C URL) OPT_COOKIEJAR , $cookiefile);

$output =curl_exec($ch);

//

を使用してデバッグします

if ($output === FALSE) {

echo "cURL Error: " .

}

curl_close($ch);

//投稿ページに入って終了します

$post_url = 'http://dx/forum.php?mod=post&action=newthread&fid=2';

$ch = curl_init ($post_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Cookie ファイルを読み取ります

curl_setopt($ch, CURLOPT_COOKIEFILE) 、$cookiefile);

echo $data =curl_exec($ch);

curl_close($ch);

?>

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