PHP cURL モジュール

WBOY
リリース: 2016-06-23 14:34:17
オリジナル
1159 人が閲覧しました

概要:

cURL は、URL 構文を使用してコマンド ライン モードで動作するファイル転送ツールです。現在、Apple マシンには cURL が組み込まれています。 cURL は、HTTP、FTP、その他のプロトコルを幅広くサポートする包括的な送信ツールです。Thunder や Express などのダウンロード ツールのすべての機能も実現できます。 cURL 構文のサポートは PHP でも提供されます。

PHP を利用し、Daniel Stenberg によって作成された libcurl ライブラリを使用すると、さまざまな種類のプロトコルを使用してさまざまなサーバーに接続して通信できます。 libcurl は現在、http、https、ftp、gopher、telnet、dict、file、および ldap プロトコルをサポートしています。 libcurl は、HTTPS 認証、HTTP POST、HTTP PUT、FTP アップロード (これは PHP の FTP 拡張機能を通じて行うこともできます)、HTTP フォームベースのアップロード、プロキシ、Cookie、およびユーザー名 + パスワード認証もサポートしています。

cURL が必要な理由:

ファイル (URL) を読み取る一般的な方法は、file_get_contents、file などの PHP の組み込みファイル読み取り関数の一部を使用することです (記事「ファイルを読み取るための一般的な方法」を参照してください) in PHP"); しかし、これらのメソッドは単純なファイル読み取りのみを実行でき、URL へのデータの POST、プロキシ サーバーの使用、SSL プロトコルを使用した URL の読み取り、URL ログイン認証などの複雑な機能を実装できません。そして、cURL はこれらの関数のサポートを提供します。

開く方法: PHP ディレクトリにある 2 つのファイル libeay32.dll と ssleay32.dll を C:windowssystem32 ディレクトリにコピーします。 php.iniを変更します。 extension = php_curl.dll の前のセミコロンを削除します。 Apache サービスを再起動し、phpinfo を確認します。curl が有効になっていることがわかります

cURL リクエストを確立するための基本手順: 1. 初期化

curl_init メソッドを使用して cURL ハンドルを初期化します

$ch =curl_init("http: //www.example.com/");

curl_init メソッドはオプションのパラメータ URL を提供し、curl_setopt()、curl_exec()、およびcurl_close() 関数で使用する cURL ハンドルを返します。

URL がcurl_init で指定されていない場合は、curl_setopt でこの値を手動で設定する必要があります。URL が指定されている場合、CURLOPT_URL は自動的にこの値に設定されます。

2. 変数を設定する

curl_setopt メソッドを使用して cURL 送信パラメータを設定するか、curl_setopt_array を使用して一連のパラメータをバッチで設定します。

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

$ch は、curl_init が初期化されたときに返される cURL ハンドルです。

3. 実行して結果を取得します

cURL セッションを実行するには、curl_exec を使用します。成功した場合は TRUE、失敗した場合は FALSE を返します。ただし、CURLOPT_RETURNTRANSFER オプションが設定されている場合、関数は成功した場合は実行結果を返し、成功した場合は FALSE を返します。それは失敗します。

curl_exec($ch);

curl_getinfo を使用して cURL セッションに関する情報を取得することもできます。

curl_getinfo($info);

curl_getinfo によって返される配列には、次の情報が含まれます:

"url" //リソースネットワークアドレス "content_type" //コンテンツエンコーディング "http_code" //HTTP ステータスコード "header_size" //ヘッダーのサイズ "request_size" //要求されたサイズ "filetime" //ファイル作成時間 "ssl_verify_result" //SSL 検証結果 "redirect_count" //ジャンプ テクノロジ "total_time" //かかった合計時間 "namelookup_time" //DNS クエリにかかった時間 "connect_time " //接続待機時間 "pretransfer_time" //送信までの準備時間 "size_upload" //アップロードデータのサイズ "size_download" //ダウンロードデータのサイズ "speed_download" //ダウンロード速度 "speed_upload" //アップロード速度"download_content_length" //ダウンロードされたコンテンツの長さ "upload_content_length" //アップロードされたコンテンツの長さ "starttransfer_time" //転送を開始する時間 "redirect_time" //リダイレクトには 4 時間がかかります。 cURL セッションを閉じます

curl_close を使用しますcURL セッションを閉じ、すべてのリソース (cURL ハンドル $ch などを含む) を解放します。

curl_close($ch);

完全な例は次のとおりです:

<?php    // 1. 初始化    $ch = curl_init("http://www.baidu.com");    // 2. 设置选项    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出,如果没有设置CURLOPT_RETURNTRANSFER,curl_exec($ch)将直接输出返回内容。
ログイン後にコピー
 // 3. 执行会话并获取内容    $output = curl_exec($ch);  //或者使用curl_multi_getcontent()获取会话返回的内容    echo $output;    $info = curl_getinfo($ch);    print_r($info);    // 4. 关闭curl会话    curl_close($ch);?>
ログイン後にコピー



もちろん、curl_errorを使用してセッションエラー情報を取得することもできます。

if($output === false)//注意是三个等号,表示检查返回值是boolean类型,如果是两个等号,返回值为空字符串也会被认为是false    echo 'cURL error:'.curl_error($ch);
ログイン後にコピー

例えば、Alipay のホームページに直接アクセスします。 Alipay のホームページは SSL プロトコルに基づいているため、直接アクセスすると証明書エラーが表示されます。データを URL に POST します

cURL error:SSL certificate problem, verify that the CA cert is OK. Details:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
ログイン後にコピー
<?php    // 1. 初始化    $ch = curl_init("http://www.baidu.com");    // 2. 设置代理服务器    curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');    // 3. 执行会话    curl_exec($ch);    // 4. 关闭curl会话    curl_close($ch);?>
ログイン後にコピー

ブラウザのユーザー エージェントを使用します

<?php    //POST数据    $curlPost = array(        'name'=>'myname',        'pwd'=>'mypassword'    );    //或者 $curlPost = 'name=myname&pwd=mypassword';
ログイン後にコピー

SSL プロトコルの URL にアクセスします

  //初始化    $ch = curl_init("http://localhost/SP/getpost.php");    //设置    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_POST, 1);    //设施post方式提交数据    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);    //设置POST的数据    //执行会话并获取内容    $output = curl_exec($ch);    echo $output;    //关闭curl会话    curl_close($ch);?>
ログイン後にコピー


cURL には、ブログのフレンドリー リンクが有効かどうかを確認するなど、他にも多くの実用的な用途があります。ここでは、curl_getinfo() 関数によって返される http_code 値を使用する必要があります。また、ファイルのアップロード機能なども実装できます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート