ホームページ  >  記事  >  ウェブフロントエンド  >  PHP_javascript スキルにおける CURL のいくつかの古典的な応用例

PHP_javascript スキルにおける CURL のいくつかの古典的な応用例

WBOY
WBOYオリジナル
2016-05-16 16:18:221509ブラウズ

1. cURL リクエストの基本手順:

(1)初期化
(2) URL
などのオプションを設定します (3) HTML文書の内容を実行して取得する
(4) cURL ハンドルを解放

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

//1. 初期化
$ch =curl_init();

//2. URL を含むオプションを設定します
curl_setopt($ch, CURLOPT_URL, "http://www.cnblogs.com/it-cen/");

//curl_exec() で取得した情報を直接出力するのではなく、ファイル ストリームの形式で返します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//ヘッダファイル情報は起動時にデータストリームとして出力されます
curl_setopt($ch, CURLOPT_HEADER, 1);

//3. HTML ドキュメントのコンテンツを実行して取得します
curl_exec($ch);

//4. ハンドルを解放します
curl_close($ch);

echo $ch;

?>

注: 2 番目のステップが最も重要で、curl_setopt() 関数です

エラーをチェックするステートメントを追加できます。ここでは空の出力とブール値 false を区別するために「===false」が使用されていることに注意してください。

コードをコピーします コードは次のとおりです:
$output =curl_exec($ch);

If ($output === false) {
echo "cURL エラー:".curl_error($ch);
}

curl_getinfo() 関数は、cURL の実行後にこのリクエストに関連する情報を返します。これはデバッグやトラブルシューティングに役立ちます。

コードをコピーします コードは次のとおりです:
curl_exec($ch);
$info =curl_getinfo($ch);
echo '
';<br>
print_r($info);
echo '
';


返されたデータ


コードをコピー コードは次のとおりです: 配列
(
[URL] => http://www.cnblogs.com/it-cen/
[コンテンツタイプ] => charset=utf-8
[http_code] => 200
[ヘッダーサイズ] => 312
[リクエストサイズ] => 61
[ファイル時間] => -1
[ssl_verify_result] => 0
[リダイレクト数] => 0
[合計時間] => 0.172
[名前検索時間] => 0.016
[接続時間] => 0.063
[転送前時間] => 0.063
[サイズ_アップロード] => 0
[size_download] => 14658 //要求されたデータ サイズ [speed_download] => 85220
[速度_アップロード] => 0
[ダウンロードコンテンツの長さ] => 14658
[アップロードコンテンツの長さ] => 0
[転送開始時間] => 0.125
[リダイレクト時間] => 0
[証明書情報] => 配列
(
)

[リダイレクト URL] =>
)




2. この情報は、デバッグに非常に役立ちます
。たとえば、cURL がクロールしている場合、ネットワークやその他の理由により、クロールされたデータが不完全であることがよくあります。ファイルサイズを計算し、curl_getinfo() で取得したファイルサイズと比較します。サイズが等しい場合はダウンロードが正しいと見なされ、そうでない場合はダウンロードが繰り返されます。

画像を取得する例を見てみましょう:


コードをコピー

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

header("Content-Type: image/png");

//1. 初期化
$ch =curl_init();

//2. URL を含むオプションを設定します
curl_setopt($ch, , CURLOPT_URL, "http://img04.taabaocdn.com/tfscom/TB1omaTHXXXXXajXVXXtKXbFXXX.png");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

//3. コンテンツを実行して取得します
$res =curl_exec($ch);

//情報を取得します
$info =curl_getinfo($ch);

//4. リソースを解放します
curl_close($ch);

file_put_contents("d:/aa.png", $res);

$size = filesize("d:/aa.png");

if ($size != $info['size_download']) {
echo "ダウンロードしたデータは不完全です。もう一度ダウンロードしてください。";
} else {
echo "データのダウンロードが完了しました";
}


?>

3. POST メソッドを使用して cURL

でデータを送信します

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

$ch =curl_init();

$data = array('name'=>'kelly', 'age'=>27, 'sex'=>1);

curl_setopt($ch, CURLOPT_URL, "http://localhost.post.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//投稿に設定します
curl_setopt($ch, CURLOPT_POST, 1);
//
を post 変数に追加します curl_setopt($ch, CURLOPT_POSTFIELDS,$data);

$res =curl_exec($ch);

curl_close($ch);

echo $res;


?>

この方法を使用して、メッセージを残すことをシミュレートすることも、水を入れるロボットに座ることもできます。

4. cURL を使用してファイルをアップロードします

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

//アップロードされたデータをリクエストします
$data = array('name'=>'beauty', "upload"=>"@a.zip");

$ch =curl_init();

curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1/Socket/upload_file.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$res =curl_exec($ch);

curl_close($ch);

echo $res;

?>

注: ファイルを送信するときは、ファイル名の前に @ を付け、フルパスを使用してください

5. cURL設定項目

実際、cURL には多くの設定オプションがあります。これらのオプションは、setopt() を通じて設定されます。これが読者の役に立つことを願っています。今後は cURL を使用してください:


CURLOPT_AUTOREFERER: location: に基づいてリダイレクトする場合、ヘッダーに Referer: 情報を自動的に設定します

CURLOPT_COOKIESESSION: 有効にすると、cURL はセッション Cookie を厳密に渡し、他の Cookie を無視します

CURLOPT_HEADER: ヘッダー ファイル情報をデータ ストリームとして出力します

CURLOPT_INFILESIZE: アップロードされるファイルのサイズをバイト単位で設定します

CURLOPT_MAXCONNECTS: 許可される接続の最大数

CURLOPT_MAXREDIRS: HTTP リダイレクトの最大数を指定します

CURLOPT_COOKIE: HTTP リクエストの「cookie:」部分の内容を設定します。複数の cookie の後にセミコロンが続き、セミコロンの後にスペースが入ります。

CURLOPT_POSTFIELDS: すべてのデータは HTTP プロトコルの「POST」操作を使用して送信されます。ファイルを送信するには、ファイル名の前に @ プレフィックスを追加し、フルパスを使用します。

......

より具体的な設定項目については、PHP マニュアルを参照してください

cURL は非常に強力なライブラリであり、PHP に固有のものではありません。

このブログ投稿でいくつかの古典的な cURL の例を学習することで、読者が何かを得られることを願っています。

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