ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでのcurl_init関数の使用手順

PHP_PHP チュートリアルでのcurl_init関数の使用手順

WBOY
WBOYオリジナル
2016-07-21 15:33:091041ブラウズ

コードをコピーします コードは次のとおりです:

$ch =curl_init();
$c_url = 'http://www.baidu.com'
$c_url_data = "product_&type=".$ "" ;
curl_setopt($ch, CURLOPT_URL,$c_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $c); _url_data) ;
echo $ result =curl_exec($ch);
curl_close ($ch);


PHP での Curl の使用
投稿日: 2008 年 9 月 14 日 PHP に帰属
オリジナル (英語) アドレス: http://www.phpit.net/article/using-curl-php 著作権表示: 表示-非営利-改変禁止 2.0
要約:
この記事では、主に php_curl ライブラリの知識を説明し、その使用方法を説明しますphp_curl を使用することをお勧めします。
はじめに
PHP スクリプト コードを作成するときに次の問題に遭遇することがあります: 他のサイトからコンテンツを取得するにはどうすればよいですか?ここにはいくつかの解決策があります。最も簡単なのは、PHP で fopen() 関数を使用することですが、fopen 関数には、「Web クローラー」を構築してクライアントの説明を定義したい場合などに使用する十分なパラメーターがありません。クローラー (IE、Firefox) の場合、POST、GET などのさまざまなリクエスト メソッドを通じてコン​​テンツを取得します。これらの要件は、 fopen() 関数を使用して達成することはできません。
上記の問題を解決するには、PHP 拡張ライブラリ Curl を使用します。この拡張ライブラリは通常、デフォルトでインストール パッケージに含まれており、他のサイトのコンテンツを取得したり、他のことを行うために使用できます。
注: これら 2 つのコードには、php_curl 拡張ライブラリのサポートが必要です。curl サポートが有効になっている場合は、curl ライブラリがサポートされていることを意味します。
1. Windows で PHP の CURL ライブラリのサポートを有効にします:
php.ini を開き、extension=php_curl.dll の前の ; 記号を削除します。
2. Linux で PHP の Curl ライブラリのサポートを有効にします:
PHP をコンパイルするときに ./configure の後に –with-curl を追加します
この記事では、curl ライブラリの使用方法と、その便利なその他の機能を見てみましょう。 、最も基本的な使用法から始める必要があります
基本的な使用法:
最初のステップでは、関数curl_init()を通じて新しいcurlセッションを作成します。コードは次のとおりです:
// 新しいcurlリソースを作成します
$ch =curl_init();
?>
URL のコンテンツを取得する必要がある場合、次のステップは URL をcurl_setopt() 関数に渡すことです:
// URL とその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/”)
?> 前のステップが完了すると、curl の準備作業が完了します。 URL サイトのコンテンツを取得して印刷します。コード:
// URL を取得してブラウザに渡します
curl_exec($ch);
?> 最後に、現在の Curl セッションを閉じます
//curl リソースを閉じ、システム リソースを解放します
curl_close($ch) ;
?>
完成したコード例を見てみましょう:



コードは次のとおりです:

// 新しいcurlリソースを作成します $ch =curl_init(); / URL とその他の適切なオプションを設定します curl_setopt($ch, CURLOPT_URL, “http://www.google.nl/”); // URL を取得してブラウザに渡します curl_exec($ch); curl リソースを閉じて、システム リソースを解放します
curl_close($ch);


別のサイトのコンテンツを取得して、それを自動的にブラウザに出力する方法はありますか?情報を取得し、その出力内容を制御する場合はどうなるでしょうか? curl_setopt() 関数のパラメータで、コンテンツを取得するが出力しない場合は、CURLOPT_RETURNTRANSFER パラメータを 0 以外の値/true! に設定します。を参照してください:



コードをコピーします

コードは次のとおりです:

// 新しいcurlリソースを作成します
$ch =curl_init()
// URLとその他の適切なオプションを設定します
curl_setopt($ ch, CURLOPT_URL, “http://www.google.nl/”); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // URL を取得し、出力を返します $output =curl_exec($ch); /curl リソースを閉じ、システム リソースを解放します curl_close($ch);
// 'Google' を 'PHPit' に置き換えます
$output = str_replace('Google', 'PHPit', $output);出力
echo $output

;
上記の 2 つの例では、curl_setopt() 関数の異なるパラメーターを設定することで異なる結果が得られることに気づいたかもしれません。これが、curl が強力な理由です。これらのパラメーターの意味を見てみましょう。
CURL 関連のオプション:
PHP マニュアルのcurl_setopt() 関数を読んだことがある方は、その下にパラメータの長いリストがあることがわかります。詳細については、1 つずつ紹介するのは不可能です。 PHP マニュアルを確認してください。ここでは、一般的に使用されるいくつかのパラメーターと一部のパラメーターのみが紹介されています。
最初の興味深いパラメータは CURLOPT_FOLLOWLOCATION です。このパラメータを true に設定すると、curl はリダイレクト コマンドに基づいてより深いリダイレクト パスを取得します。たとえば、PHP ページを取得しようとすると、次のようなジャンプ コードが含まれます。 PHP ページでは、Curl はジャンプ コードを返す代わりに http://new_url からコンテンツを取得します。完全なコードは次のとおりです:
コードをコピーします コードは次のとおりです:

// 新しいcurlリソースを作成します
$ch =curl_init()
// URLおよびその他の適切なオプションを設定します
curl_setopt; ($ch, CURLOPT_URL , "http://www.google.com/");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// URL を取得し、
curl_exec($ch);

Google がリダイレクト リクエストを送信する場合、上記の例ではリダイレクトされた URL に基づいてコンテンツを取得し続けます。このパラメータに関連する 2 つのオプションは CURLOPT_MAXREDIRS と CURLOPT_AUTOREFERER です。パラメータ CURLOPT_MAXREDIRS オプションを使用すると、リダイレクトの最大数を定義できます。この数を超えると、そのコンテンツは取得されなくなります。 CURLOPT_AUTOREFERER が true に設定されている場合、curl は自動的にリファラー ヘッダーを各ジャンプ リンクに追加します。これはあまり重要ではないかもしれませんが、場合によっては非常に便利です。
次に導入されるパラメーターは CURLOPT_POST です。これは、GET リクエストの代わりに POST リクエストを実行できるため、非常に便利な機能です。つまり、実際にフォーム Fill in を使用せずに
他のフォーム ページを送信できることを意味します。次の例は、私が言いたいことを示しています:


コードをコピーします コードは次のとおりです:
// 新しいcurlリソースを作成します
$ch =curl_init();
// URLとその他の適切なオプションを設定します。
curl_setopt($ ch, CURLOPT_URL,"http://projects/phpit/content/using%20curl%20php/demos/handle_form.php");
// POST を実行します
$data = array('name' =>) ; 'デニス' , '姓' => 'パレット');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// URL を取得し、
curl_exec($) ch);
?>
echo '受信したフォーム変数:';
echo '';これにより、フォームの送信が非常に簡単になり、常にフォームに入力することなくすべてのフォームをテストできる優れた方法であることがわかります。
CURLOPT_CONNECTTIMEOUT パラメータは通常、curl がリンクをリクエストする時間を設定するために使用されます。これは非常に重要なオプションです。この時間を設定しすぎると、curl リクエストが失敗する可能性があります。
しかし、あまりにも長く設定すると、おそらく PHP スクリプトが停止してしまいます。このパラメータに関連するオプションは CURLOPT_TIMEOUT です。これは、curl の実行が許可されるまでに必要な時間を設定するために使用されます。これを非常に小さい値に設定すると、ダウンロードに時間がかかるため、ダウンロードされたページが不完全になる可能性があります。
最後のオプションは CURLOPT_USERAGENT で、webspilder や IE6.0 などのリクエストのクライアント名をカスタマイズできます。 サンプル コードは次のとおりです:



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

// 新しいcurlリソースを作成します
$ch =curl_init();
// URLおよびその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, "http://sc.jb51.net/"); ($ch, CURLOPT_USERAGENT, ' 私のカスタム Web スパイダー/0.1');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch)?>最も興味深いパラメータを追加します。すべてが紹介されました。curl_getinfo() 関数を導入して、何ができるかを見てみましょう。 ページ情報の取得: curl_getinfo() 関数を使用すると、オプションの 2 番目のパラメーターを設定することで、この情報を編集できます。また、配列の形式で渡すこともできます。以下の例のように:

コードをコピーします

コードは次のとおりです:

// 新しいcurlリソースを作成します
$ch =curl_init();
// URLおよびその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.com”); $ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
// URL を取得します
$output =curl_exec($ch);
echo '';
print_r (curl_getinfo($ch));
echo '';


返される情報のほとんどは、このリクエストに費やされた時間、ヘッダー ファイルなどです。返される情報には、もちろん、ページ コンテンツのサイズや最終変更時刻などのページ情報もあります。
curl_getinfo() 関数については以上です。実際に何に使用されるかを見てみましょう。
実際の使用法:
curl ライブラリの最初の使用法は、URL ページが存在するかどうかを確認することです。たとえば、404 はページが存在しないことを意味します。いくつかの例:



コードをコピーします
コードは次のとおりです: // 新しい Curl リソースを作成します $ch =curl_init();
// URL とその他の適切なオプションを設定します
curl_setopt($ch , CURLOPT_URL, “http://www.google .com/does/not/exist”);
curl_setopt($ch, CURLOPT_RETURTRANSFER, true);
// URL を取得します
$output =curl_exec($ch); / 応答コードを取得
$response_code =curl_getinfo($ ch, CURLINFO_HTTP_CODE)
// 見つからない場合
if ($response_code == '404') {
echo 'ページが存在しません'
} else {
echo $output;
}
?>


他のユーザーは、要求された各ページの存在を確認する自動チェッカーを作成できます。
curl ライブラリを使用して、Google や他の Web スパイダーに似た Web スパイダーを作成できます。この記事はウェブ スパイダーの書き方に関するものではないため、ウェブ スパイダーについては詳しく説明しませんが、将来的には、curl を使用して PHPit でウェブ スパイダーを構築する方法を紹介します
結論:
この記事では、すでに PHP でのカール ライブラリの使用方法とそのほとんどのオプションを示します。
Web ページを取得するだけの最も基本的なタスクの場合は、おそらく CURL ライブラリは必要ありませんが、もう少し高度なことを実行したい場合は、curl ライブラリを使用することをお勧めします。
近い将来、phpit を使用して、Google のウェブ スパイダーに似た独自のウェブ スパイダーを構築する方法を正確に説明する予定ですので、楽しみにしていてください。



http://www.bkjia.com/PHPjc/322663.html
www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/322663.html技術記事次のようにコードをコピーします: $ch =curl_init(); $c_url = 'http://www.baidu.com'; $c_url_data = "product_curl_setopt($ch, CURLOPT_URL,$c_url);curl_setopt($ch, CURLOPT_POST) 、1);カール...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。