ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルでのカールの入門チュートリアルと一般的な使用例

php_PHP チュートリアルでのカールの入門チュートリアルと一般的な使用例

WBOY
WBOYオリジナル
2016-07-13 10:34:201000ブラウズ

1.curlの利点

phpで特定のURLのコンテンツを取得するのは、file_get_contents、file、またはreadfile関数を使用することで簡単に実現できます。すべて:

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


$content = file_get_contents("http://www.360weboy.com")
$line s = ファイル("http:// www.360weboy.com");
readfile("http://www.360weboy.com");


はい、上記の関数は確かに状況によっては非常に便利ですが、私はこれらの関数はそうではないと感じています。十分な柔軟性があり、エラーを処理できません。さらに、フォーム データのサーバーへの送信、ファイルのアップロード、Cookie の処理、または PHP プログラムでの認証などのタスクが発生した場合、上記の 3 つの機能はまったく機能しません。このとき、cURL にはその値が反映されます。

cURLl は多くのネットワーク プロトコルをサポートするだけでなく、非常に強力な URL リクエストに関する特定の情報も提供します。

2.curlを使用する簡単な手順

cURLを使用してURLリクエストを送信するには、具体的な手順は次の4つの手順に大別されます:

1. 初期化
2. リクエスト オプションを設定します
3. cURL セッションを実行し、関連する応答を取得します
4. cURL ハンドルを解放し、cURL セッションを閉じます

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

$ch =curl_init()

using using use using through using ’s ’ using using - - off $ch, CURLOPT_RETURNTRANSFER, 1) / / 4. cURL ハンドルを解放し、閉じますcURL セッション curl_close($ch);

cURL の威力は 2 番目のステップに正確に反映されます。リクエストのオプションは、curl_setopt を通じて柔軟に設定できます。詳細については、http://cn2.php.net/manual/zh/function.curl-setopt.php
を参照してください。

3. エラー処理


上記のコードでは、エラー処理コードを追加することもできます:


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

Re if ($response === false) { echo "cuRL specific error message:". CURL_ERROR ($ ch); リクエストエラーの場合、Curl は FALSE 値を返す場合があります。 == の代わりに === を使用します。

4.curl リクエストの特定の情報を取得します

cURL リクエストを実行した後、curl_getinfo を使用してリクエストの特定の情報を取得することもできます:
コードをコピーします

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


curl_exec($ch); c$curl_info =curl_getinfo($ch);




上記の $curl_info は連想配列であり、そこから多くの特定のリクエスト情報を取得できます。 http://cn2.php.net/manual/zh/function.curl-getinfo.php

を参照してください。

5. 投稿リクエストを送信するには、curl を使用します

特定の URL に取得リクエストを送信する場合、cURL を使用して取得リクエストを送信する必要はないと前に述べました。より便利な file_get_contents 関数を使用できます。リクエストを完了します。ただし、通常、フォームを送信するとき、データは URL パラメーターを介して渡されるのではなく、投稿リクエストのコンテンツ領域を介して送信されます。この場合、投稿リクエストの送信をシミュレートするために、柔軟な cURL を使用する必要があります。

ここで、cURL を使用して、post.php スクリプトへの投稿リクエストの送信をシミュレートし、いくつかのデータを post.php に送信して、投稿リクエストのデータを post.php に出力してみましょう。コード例は次のとおりです。 制 コードをコピーします

コードは次のとおりです: $ url = "http://www.360weboy.me/post.php" ;
$ $ post_data = array(
"blog_name" => "360weboy"、
"blog_url" => "http://www.360weboy.com"、
"blog_name");

$ ch = curl_init( ;
curl_setopt($ ch、curlopt_url、$ url);
上記のリクエストが post.php に送信され、print_r ($_POST) を介して出力されると、上記のコード例は次の応答を出力します。



コードをコピーします

コードは次のとおりです。
配列
(l [blog_name] = & gt; 360weboy
[blog_url] = & gt; http://www.360weboy.com
[acted] = & gt;









CURL は post.php にリクエストを送信し、データを送信し、post.php から対応する応答を受け取り、最後に応答を出力します。上記の例は単純ですが、post リクエストの送信における cURL の利便性と威力を十分に示しています。curl_setopt について大騒ぎすることができます。 6. ファイルのアップロード
cURL 経由で投稿リクエストを送信してファイルをアップロードする方法を見てみましょう。 PHP でのファイル アップロードの例を簡単に説明します。PHP でのファイル アップロードでは、cURL を介してファイルのアップロードを実行する方法を説明します。




コードをコピーします

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

$url = "http://www.360weboy.me/upload.php"; $ $ post_data = array(

"添付ファイル" => "@e:/jackblog/boy.jpg" //要求されたurl curl_setopt($ ch、curlopt_url、$ url); 1);
curl_setopt ($ch、CURLOPT_POST、 1);

//特定の投稿データを設定します curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
上記のサンプルコードを使用すると、ローカルマシン上で Boy.jpg を実行できます。ローカルサーバーのupload.phpにアップロードされる場合、上記のコード例の最終的な出力応答は次のようになります。



コードをコピーします

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

[name] =>boy.jpg
[tmp_name] =>

cURL 経由でファイルをアップロードしたい場合は、次のことがわかります。 、アップロードされたファイルのパスをcurlリクエストの投稿データとして設定し、パスの前に@を追加するだけです。


7. ファイルのダウンロード


上記では、ファイルを自動的にダウンロードして保存するために、curl を使用することもできます。追加すべき点が 1 つあります。curl リクエストを実行するときに、返されたコンテンツを直接出力するのではなく、返されたコンテンツを取得する必要がある場合は、次のコード設定を使用することを忘れないでください。これは、curl のデフォルトではリクエストの応答コンテンツが出力されるためです。 :


コードをコピーします

コードは次のとおりです:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


360weboyのサーバーのルートディレクトリにtest.zipファイルがある場合、ダウンロードしてローカル ファイルに保存する必要がある場合は、次のコードを使用してそれを実行してみてください:



コードをコピーします

コードは次のとおりです:
的 // URL を設定します
$ url = 'http://www.360weboy.com/test.zip' ;

// ファイルパスをローカルファイルパスに設定します
$ PATH =' Local/Path /to/test .zip ';

curl_init($ ch);
上記のコードは、ファイルを最初にメモリに読み取り、すべての内容が読み取られるまで待ってから、ローカル ハードディスクに書き込む必要があるため、比較的大きなファイルのダウンロードには適していません。 PHP で設定されたメモリ制限が非常に大きい場合でも、この状況はパフォーマンスに大きな影響を与えます。したがって、大きなファイルをダウンロードする場合は、curl にこのタスクを引き継がせ、ダウンロードと書き込みを同時に実装する必要があります。この場合は問題ありません。次のコードを見てください:



コードをコピーします

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



/test.zip';

ch、CURLOPT_FILE、$fp) に設定して、次のようにします。 curl はリモート データを読み取り、同時にローカル ファイルに書き込みます。プログラム内でリモート応答の内容を取得する必要はないので、リクエストを実行するだけで済みます。

8. http 検証


サーバーがリクエストを検証する必要がある場合は、次のようなサンプル コードを通じて実行できます: コードをコピー
コードは次のとおりです:



$url = "http://www. " 名前とパスワード
curl_setopt ($ ch,curlopt_userpwd, "ユーザー名: パスワード");

$ Response = CURL_EXEC ($ ch);
curl_close($ch );:


$ch =curl_init();
curl_setopt($ch, CURLOPT_URL,'http://www.360weboy.com'); //プロキシ IP アドレスを設定します
curl_setopt($ch, CURLOPT_PROXY, '222.7) 3.173.50: 8080');

''''''

$response =curl_exec($ch);
curl_close ($ch);具体的なコードは次のとおりです:




コードをコピーします

コードは次のとおりです:
$url = 'http://www.360weboy.me/json.php', 'url' => 'http://www.360weboy.com','email'=>'360weboy@gmail.com');
$json_string = json_encode($data); C $ ch =curl_init ($ url); $ ch,curlopt_returntransfer, 1);
// 上記の json 文字列を送信します

Curl_Setopt St, "Post");

Curl_Setopt ( $ch, CURLOPT_POSTFIELDS, array('data'=>$json_string);このファイルの json_decode を使用して、受信した json 文字列をオブジェクトに変換し、その中のメール フィールドを出力します。 コードは次のとおりです。次のように: Echo $ json_data-> email; ,"email":"360weboy@gmail.com"}' json_decode後、phpのデータ形式に変換されてオブジェクトになるので、$json_data->を通じてメールフィールドの値にアクセスできます。電子メールを送信し、最後に 360weboy@gmail.com を出力します。上記のコードを使用してテストできます。
次の php 配列を通じて json 文字列を生成する場合:



コードをコピーします

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



$data = array('360weboy', 'http://www.360weboy. com', '360weboy @gmail.com');


生成された json 文字列は次のとおりです:



コードをコピーします

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


'["360weboy","http ://www.360weboy.com" ,"360weboy@gmail.com"]'
上記のjson文字列は、json_decodeで処理された後、php内で配列形式になります。メールを取得したい場合は、$json_data[2]を通じてアクセスできます。

11. 概要

このブログ投稿では cURL のいくつかの使用法をリストするだけであり、サンプル コードは比較的単純です。ただし、これを読んだ後は cURL を使いたくなるはずです。その後、関連する情報やマニュアルを探して試してみてください。

さて、ここで書くのはやめましょう!辛抱強く読んでいただきありがとうございます!

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/751933.html技術記事 1.curl の利点 PHP では、file_get_contents、file、readfile 関数を使用して簡単に取得できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。