PHP ベースの cURL のクイック スタート 1
PHP 1 ベースの cURL によるクイックスタート
cURL は、URL 構文を使用してファイルやデータを転送するツールで、HTTP、FTP、TELNET などの多くのプロトコルをサポートしています。最も優れた点は、PHP が cURL ライブラリもサポートしていることです。この記事では、cURL の高度な機能と、それを PHP で使用する方法を紹介します。
なぜ cURL を使用するのですか?
はい、他の方法で Web コンテンツを取得できます。ほとんどの場合、私は怠けたいので、単純な PHP 関数を使用するだけです:
以下は引用された内容です:
$content = file_get_contents("http://www.nettuts.com"); // or $lines = file("http://www.nettuts.com"); // or readfile(http://www.nettuts.com);
ただし、このアプローチには柔軟性と効果的なエラー処理が欠けています。さらに、Cookie の処理、検証、フォームの送信、ファイルのアップロードなど、いくつかの難しいタスクを完了するために使用することはできません。
引用:
cURL は、さまざまなプロトコルとオプションをサポートし、URL リクエストに関連するさまざまな詳細を提供できる強力なライブラリです。
基本構造
より複雑な関数を学ぶ前に、PHP で cURL リクエストを確立するための基本的な手順を見てみましょう:
初期化
変数の設定
実行と結果を取得します
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);
2 番目のステップ (つまり、curl_setopt()) が最も重要であり、すべての秘密がここにあります。 URL リクエストのさまざまな詳細を指定する、設定できる cURL パラメーターの長いリストがあります。これらをすべて一度に読んで理解するのは難しい場合があるため、今日はより一般的で便利なオプションのみを試します。
エラーのチェック
エラーをチェックするステートメントを追加できます (これは必須ではありません):
以下は引用された内容です:
// ... $output = curl_exec($ch); if ($output === FALSE) { echo "cURL Error: " . curl_error($ch); } // ...
比較する場合、「== FALSE」ではなく「=== FALSE」を使用することに注意してください。空の出力とブール値 FALSE (実際のエラー) を区別する必要があるためです。
?
情報の取得
これは、cURL の実行後にこのリクエストに関する情報を取得できる別のオプションの設定です:
以下は引用された内容です:
// ... curl_exec($ch); $info = curl_getinfo($ch); echo '获取'. $info['url'] . '耗时'. $info['total_time'] . '秒'; // ...
返される配列には次の情報が含まれます:
"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" //リダイレクト時間
ブラウザベースのリダイレクト
最初の例では、サーバーにブラウザベースのリダイレクトがあるかどうかを検出するコードを提供します。たとえば、一部の Web サイトは、モバイル ブラウザであるかどうか、さらにはユーザーの出身国に基づいて Web ページをリダイレクトします。
CURLOPT_HTTPHEADER オプションを使用して、ユーザー エージェント情報やデフォルト言語など、送信する HTTP リクエスト ヘッダー (http ヘッダー) を設定します。次に、これらの特定の Web サイトが別の URL にリダイレクトするかどうかを確認します。
以下は引用内容です:
// 测试用的URL $urls = array( "http://www.cnn.com", "http://www.mozilla.com", "http://www.facebook.com" ); // 测试用的浏览器信息 $browsers = array( "standard" => array ( "user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)", "language" => "en-us,en;q=0.5" ), "iphone" => array ( "user_agent" => "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A537a Safari/419.3", "language" => "en" ), "french" => array ( "user_agent" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)", "language" => "fr,fr-FR;q=0.5" ) ); foreach ($urls as $url) { echo "URL: $url\n"; foreach ($browsers as $test_name => $browser) { $ch = curl_init(); // 设置 url curl_setopt($ch, CURLOPT_URL, $url); // 设置浏览器的特定header curl_setopt($ch, CURLOPT_HTTPHEADER, array( "User-Agent: {$browser['user_agent']}", "Accept-Language: {$browser['language']}" )); // 页面内容我们并不需要 curl_setopt($ch, CURLOPT_NOBODY, 1); // 只需返回HTTP header curl_setopt($ch, CURLOPT_HEADER, 1); // 返回结果,而不是输出它 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); // 有重定向的HTTP头信息吗? if (preg_match("!Location: (.*)!", $output, $matches)) { echo "$test_name: redirects to $matches[1]\n"; } else { echo "$test_name: no redirection\n"; } } echo "\n\n"; }
まず、テストする必要がある URL のセットを作成し、次にテストする必要があるブラウザー情報のセットを指定します。最後に、ループを使用して、発生する可能性のあるさまざまな URL とブラウザの一致状況をテストします。
cURL オプションを指定したため、返される出力コンテンツには HTTP ヘッダー情報 ($output に保存される) のみが含まれます。単純な規則ルールを使用して、ヘッダー情報に「Location:」という単語が含まれているかどうかを確認します。
このコードを実行すると、次の結果が返されるはずです:


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTTP ステータス コード 520 は、サーバーがリクエストの処理中に不明なエラーに遭遇し、より具体的な情報を提供できないことを意味します。サーバーがリクエストを処理しているときに不明なエラーが発生したことを示すために使用されます。サーバー構成の問題、ネットワークの問題、またはその他の不明な理由が原因である可能性があります。これは通常、サーバー構成の問題、ネットワークの問題、サーバーの過負荷、またはコーディング エラーが原因で発生します。ステータス コード 520 エラーが発生した場合は、Web サイト管理者またはテクニカル サポート チームに連絡して詳細情報と支援を得ることが最善です。

Linux でカールのバージョンを更新するには、以下の手順に従います。 現在のカールのバージョンを確認します。 まず、現在のシステムにインストールされているカールのバージョンを確認する必要があります。ターミナルを開き、次のコマンドを実行します。curl --version このコマンドは、現在のcurlバージョン情報を表示します。利用可能なcurlのバージョンを確認する:curlを更新する前に、利用可能な最新バージョンを確認する必要があります。 Curl の公式 Web サイト (curl.haxx.se) または関連ソフトウェア ソースにアクセスして、curl の最新バージョンを見つけることができます。 Curl ソース コードをダウンロードする:curl またはブラウザを使用して、選択した CURL バージョンのソース コード ファイル (通常は .tar.gz または .tar.bz2) をダウンロードします。

エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

相違点: 1. 定義が異なります。URL はユニフォーム リソース ロケーターであり、HTML はハイパーテキスト マークアップ言語です。 2. HTML には多数の URL を含めることができますが、URL 内に存在できる HTML ページは 1 つだけです。 3. HTML は is を指します。 Web ページ、url は Web サイトのアドレスを指します。

HTTP ステータス コード 403 は、サーバーがクライアントの要求を拒否したことを意味します。 http ステータス コード 403 の解決策は次のとおりです: 1. 認証資格情報を確認します。サーバーが認証を必要とする場合は、正しい資格情報が提供されていることを確認します。2. IP アドレス制限を確認します。サーバーが IP アドレスを制限している場合は、クライアントの IP アドレスは制限されています。ホワイトリストに登録されているか、ブラックリストに登録されていません。3. ファイルのアクセス許可設定を確認します。403 ステータス コードがファイルまたはディレクトリのアクセス許可設定に関連している場合は、クライアントがこれらのファイルまたはディレクトリにアクセスするための十分なアクセス許可を持っていることを確認してください。等

PHPCurl で Web ページの 301 リダイレクトを処理するにはどうすればよいですか? PHPCurl を使用してネットワーク リクエストを送信すると、Web ページから返される 301 ステータス コードが頻繁に発生します。これは、ページが永続的にリダイレクトされたことを示します。この状況を正しく処理するには、いくつかの特定のオプションと処理ロジックを Curl リクエストに追加する必要があります。以下では、PHPCurl で Web ページの 301 リダイレクトを処理する方法を詳しく紹介し、具体的なコード例を示します。 301 リダイレクトの処理原則 301 リダイレクトとは、サーバーが 30 を返すことを意味します。

HTTP 301 ステータス コードの意味を理解する: Web ページ リダイレクトの一般的なアプリケーション シナリオ インターネットの急速な発展に伴い、Web ページの操作に対する人々の要求はますます高くなっています。 Web デザインの分野では、Web ページのリダイレクトは一般的かつ重要なテクノロジであり、HTTP 301 ステータス コードによって実装されます。この記事では、HTTP 301 ステータス コードの意味と、Web ページ リダイレクトにおける一般的なアプリケーション シナリオについて説明します。 HTTP301 ステータス コードは、永続的なリダイレクト (PermanentRedirect) を指します。サーバーがクライアントのメッセージを受信すると、

NginxProxyManager を使用して HTTP から HTTPS への自動ジャンプを実装する方法 インターネットの発展に伴い、ますます多くの Web サイトが HTTPS プロトコルを使用してデータ送信を暗号化し、データ セキュリティとユーザーのプライバシー保護を向上させ始めています。 HTTPS プロトコルは SSL 証明書のサポートを必要とするため、HTTPS プロトコルを展開する際には特定の技術サポートが必要です。 Nginx は強力で一般的に使用される HTTP サーバーおよびリバース プロキシ サーバーであり、NginxProxy
