今日は、コードから HTTP リクエストを実行できるようにする、PHP の cURL 拡張機能について説明します。
日々の PHP 開発では、外部 Web サイトと通信する必要があることがよくあります。サードパーティの REST API を呼び出してデータを取得する場合でも、外部 Web サイトからリソースをダウンロードする場合でも、それを簡単に実行できるライブラリが必要です。
PHP では、さまざまな方法を使用して、さまざまな種類のサーバーに接続し、通信できます。最も簡単な方法の 1 つは、file_get_contents
関数を使用してリモート ファイルを読み取ることです。一方、ソケットはクライアントとサーバー間の通信にも使用できます。ただし、この記事では、cURL 拡張機能について実際の例を示して詳しく説明します。
cURL は Client URL の略で、URL 構文を使用して情報を送受信できるようにするライブラリです。実際、これは Daniel Stenberg によって作成された libcurl ライブラリを活用しており、これにより、さまざまな種類のプロトコルを使用してさまざまな種類のサーバーに接続し、通信することができます。 HTTP と HTTPS に加えて、libcurl ライブラリは FTP、Gopher、Telnet、DICT、File、LDAP などのプロトコルをサポートします。
次のセクションから、いくつかの実践的な例を通して、PHP で cURL 関数を使用する方法を説明します。
実際の例
このセクションでは、実際の例を構築して、PHP のさまざまな cURL 関数を示します。
PHP で cURL を使用してファイルをダウンロードする方法
リモート ファイルの読み取りまたはダウンロードは、cURL の最も一般的な使用例の 1 つです。これは、このセクションで説明する cURL GET リクエストによって行われます。
次の内容を含む curl_read_file.php ファイルの作成に進みます。
リーリー上記の例では、cURL 関数を使用して、example.com ドメインのホームページを読み取ります。どのように機能するかを理解するために、重要なスニペットを見てみましょう。
まず、curl_init
関数を使用して、新しい cURL セッションを初期化します。 $curlHandle
変数には cURL ハンドルが格納されます。curl_setopt
関数を使用して、cURL 送信のさまざまなオプションを設定できます。
cURL を使用する場合、最も頻繁に使用する関数は curl_setopt
関数です。この関数を使用すると、さまざまな CURLOPT_*
リクエスト オプションを初期化できます。 curl_setopt
関数は、cURL ハンドル、CURLOPT_XXX
オプション、および CURLOPT_XXX
オプションの値の 3 つのパラメータを取ります。
次に、CURLOPT_URL
オプションを使用した curl_setopt
関数により、リクエスト URL を example.com
に設定します。さらに、応答を $responseData
変数に初期化する必要があるため、CURLOPT_RETURNTRANSFER
オプションを TRUE
に設定します。 TRUE
に設定しない場合、応答は画面に直接表示されます。最後に、CURLOPT_HEADER
オプションを FALSE
に設定して、出力内のヘッダー情報をスキップします。
最後に、curl_exec
関数を使用して cURL リクエストを実行します。すべてがうまくいけば、$responseData
変数には example.com
ホーム ページのソース コードが含まれているはずです。
PHP で cURL を使用してデータを投稿する方法
このセクションでは、cURL を使用してデータを投稿する方法を学習します。
次の内容を含む curl_post_example.php ファイルを作成しましょう。
リーリー上記の例では、HTTP POST メソッドを使用してリクエストを送信する必要があると想定しています。実際、これは POST メソッドを使用してフォームを送信するのと同じように機能します。
$fields
変数には、POST データとして送信する必要がある値の配列が含まれています。次に、http_build_query
関数を使用して、URL エンコードされたクエリ文字列を準備します。
次に、CURLOPT_POST
オプションを TRUE
に設定して、リクエスト メソッドを HTTP POST に設定します。さらに、CURLOPT_POSTFIELDS
オプションを使用して、リクエストとともに送信する POST データを設定する必要があります。
最後に、curl_exec
関数を使用して cURL リクエストを実行します。これにより、cURL POST リクエストを実行できるようになります。
PHP で cURL を使用して JSON データを投稿する方法
通常、cURL POST リクエストで JSON データを送信する必要があります。このセクションでは、cURL リクエストで POST メソッドを使用して JSON データを送信する方法を学習します。
これは POST リクエストなので、前のセクションで説明した例を変更しましょう。次の内容を含む curl_post_json.php ファイルの作成に進みます。
リーリー前のセクションの例と似ていますが、重要なことは、json_encode
関数を使用して $fields
配列から JSON 文字列を作成していることです。
接下来,我们使用 CURLOPT_HTTPHEADER
选项将 Content-Type
标头设置为 application/json
以通知 API 服务器我们正在发送 JSON 数据。 Content-Type
标头对于以不同格式发布数据非常有用。例如,如果您想发送 XML 数据,则必须将 Content-Type
标头设置为 application/xml
。
除此之外,它与常规 POST 请求几乎相同。所以这样一来,就可以通过设置适当的 Content-Type
header 来发布不同类型的数据。如果您不设置 Content-Type
标头,它将使用 application/x-www-form-urlencoded
作为默认值。
如何在 PHP 中使用 cURL 上传文件
在本节中,我们将讨论如何使用 cURL 上传文件。
让我们创建包含以下内容的 curl_post_file.php 文件。
<?php $url = '{POST_REST_ENDPOINT}'; $curl = curl_init(); if (function_exists('curl_file_create')) { $fileAttachment = curl_file_create('/absolute/path/to/file/'); } else { $fileAttachment = '@' . realpath('/absolute/path/to/file/'); } $fields = array( 'field_name_1' => 'Value 1', 'field_name_2' => 'Value 2', 'field_name_3' => 'Value 3', 'uploaded_file' => $fileAttachment ); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, $fields); curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); $data = curl_exec($curl); curl_close($curl);
当你要上传文件时,你需要首先创建一个 CURLFile
对象。从 PHP 5.5+ 开始,创建它相当容易,因为您只需要使用 curl_file_create
函数来创建 CURLFile
对象。 curl_file_create
函数的第一个参数是要上传的文件的绝对路径。
如果您仍在使用较旧的 PHP 版本(不推荐),我们已使用后备 '@' 。 realpath('/absolute/path/to/file/')
语法创建文件链接。
最后,我们将 Content-Type
标头设置为 multipart/form-data
,因为它将是一个多部分表单 POST 请求。除此之外,这是一个例行的 cURL POST 请求。
到目前为止,我们已经了解了 PHP 中经常使用的几种不同的 cURL 方法。在下一节中,我们将了解如何使用 Guzzle 库,它使您在 PHP 中处理 HTTP 请求时变得更加轻松。
什么是 Guzzle HTTP 客户端?
根据官方文档:
Guzzle 是一个 PHP HTTP 客户端,可以轻松发送 HTTP 请求,并且可以轻松地与 Web 服务集成。
让我们快速了解一下使用 Guzzle 相对于 cURL PHP 函数的优势:
- 适用于不同类型数据的简单界面
- 支持同步和异步请求
- 支持 cURL、套接字和 PHP 流
- 符合 PSR-7
- 还有更多
总而言之,当您想使用不同的方法进行 HTTP 调用时,它是最好的库之一。在本节中,我们将讨论如何安装 Guzzle,然后通过几个快速示例来演示该库的强大功能!
如何安装 Guzzle 库
官方文档建议您使用Composer来安装Guzzle。让我们运行以下命令在您的项目中安装 Guzzle。
$composer require guzzlehttp/guzzle:^7.0 ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 6 installs, 0 updates, 0 removals - Installing psr/http-message (1.0.1): Loading from cache - Installing psr/http-client (1.0.1): Loading from cache - Installing ralouphie/getallheaders (3.0.3): Loading from cache - Installing guzzlehttp/psr7 (1.7.0): Loading from cache - Installing guzzlehttp/promises (1.4.1): Loading from cache - Installing guzzlehttp/guzzle (7.2.0): Loading from cache guzzlehttp/psr7 suggests installing laminas/laminas-httphandlerrunner (Emit PSR-7 responses) guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware) Writing lock file Generating autoload files
安装后,您需要使用 Composer 的自动加载器,如以下代码片段所示。
require 'vendor/autoload.php';
这样,您就可以使用 Guzzle 了!
如何使用 Guzzle 发出 GET 请求
在本节中,我们将了解如何使用 Guzzle 发送 GET 请求。
我们将修改之前讨论的示例,因为它将帮助您了解如何将现有的 cURL PHP 代码转换为基于 Guzzle 的实现。
让我们看一下修改后的示例。
<?php require 'vendor/autoload.php'; $client = new \GuzzleHttp\Client(); $response = $client->get('https://example.com'); $responseContents = $response->getBody();
是不是很简单呢?我们创建了 \GuzzleHttp\Client
类的实例,并将其分配给 $client
变量。现在,您可以访问 \GuzzleHttp\Client
类提供的大量实用方法。
在我们的例子中,我们需要使用 GET 方法获取内容,因此我们使用了 \GuzzleHttp\Client
类的 get
方法,它将返回 GuzzleHttp\Psr7\Response
对象。 GuzzleHttp\Psr7\Response
对象提供了各种方法,如 getStatusCode
、getBody
、getReasonPhrase
等。我们使用 getBody
方法来获取响应正文内容。
这就是您如何使用 Guzzle 执行 HTTP GET 请求。
如何使用 Guzzle 发出 POST 请求
在本节中,我们将了解如何使用 Guzzle 执行 HTTP POST 请求。
我们将修改我们在前面部分中讨论过的 curl_post_example.php 示例。使用 Guzzle 修改后的代码如下所示。
<?php require 'vendor/autoload.php'; $client = new \GuzzleHttp\Client(); $options = [ 'form_params' => [ "field_name_1" => "Value 1", "field_name_2" => "Value 2", "field_name_3" => "Value 3", ] ]; $response = $client->post("{POST_REST_ENDPOINT}", $options); $responseContents = $response->getBody(); ?>
由于这是一个 POST 请求,因此我们需要传递 $options
数组作为 post
方法的第二个参数。在我们的示例中,它包含我们需要作为 POST 数据提交的表单数据。
如果您想知道如何发送 JSON 数据,只需将 form_params
键更改为 json
,数据就会以 JSON 形式发送!
此外,如果您想随请求一起发送任何 HTTP 标头,您可以使用 headers
键来完成,如以下代码片段所示。
... ... $headers = array( 'Content-Type' => 'application/json' ); $options = [ 'form_params' => [ "field_name_1" => "Value 1", "field_name_2" => "Value 2", "field_name_3" => "Value 3", ], ‘headers’ => $headers ]; ... ...
事实上,Guzzle 库为每种方法提供了很多配置选项。此外,做同一件事有多种方法,所以我鼓励您详细探索它,我相信它会很有趣!
这是对 Guzzle 库以及 PHP cURL 函数的快速介绍。
结论
今天,我们探讨了 PHP 中 cURL 扩展的基础知识。我们讨论了如何在 PHP 中使用 cURL 执行不同类型的 HTTP 请求。此外,我们还快速介绍了 Guzzle 库,它使开发人员在 PHP 中处理 HTTP 请求时更加轻松。
以上がPHPでcURLを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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