スライドショー

【PHP入門】cURL関数の使い方をマスターしよう!

PHPでHTTPリクエストによる外部サイトとの送受信処理を行うには、cURL関数を使用します。

この記事では、

・cURL関数とは?
・cURL関数の基本的な使い方
・GETメソッドとは?
・POSTメソッドとは?

という基本的な内容から、

・Cookieオプションの指定方法
・Proxyオプションの指定方法

などのcURL関数の応用的な使い方について解説します。

ここでは、cURL関数を使用してウェブサーバから情報を取得する処理について、詳しく解説していきます!

cURLとは

cURLとは、HTTPリクエストをすることにより、外部サイトの情報を取得することができる関数です。

HTTPリクエストとは、クライアントがウェブサーバへリクエスト内容を要求することを言います。

リクエストにより、ウェブサーバからレスポンスが返ってくることにより、ウェブサイトを表示することができます。

そのようなHTTPリクエストを実行できる関数がcURLとなります。

cURL関数は基本的に以下の方法で使用します。

・curl_init()
cURLのセッションを初期化し、返り値にcURLハンドルを返します。

curl_init ([ string $url = NULL ] )

・curl_setopt()
cURLの転送用オプションを設定します。返り値にはboolean型の値を返します。

curl_setopt ( resource $cURLハンドル , int $オプション , mixed $値 )

・curl_exec()
cURLのセッションの実行時に使用します。この関数はセッションの初期化、オプション設定後に使用する必要があります。

curl_exec ( resource $cURLハンドル )

・curl_close()
cURLのセッションを閉じるときに使用します。

curl_close ( resource $cURLハンドル )

cURLの基本的な使い方

ここでは実際にcURL関数の使い方を見ていきましょう。

前述したcurl_init、curl_setopt、curl_exec、curl_close関数をそれぞれ使って、指定したURLの情報を取得します。

<?php

$url = "https://www.sejuku.net/blog/";

//cURLセッションを初期化する
$ch = curl_init();

//URLとオプションを指定する
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//URLの情報を取得する
$res =  curl_exec($ch);

//結果を表示する
var_dump($res);

//セッションを終了する
curl_close($conn);

?>

このサンプルを実行すると、ブラウザに指定したウェブページが表示されます。

ChromeやSafariなどのウェブブラウザから右クリックで「ページのソースを表示」を選択すると、文字列で指定したURLの情報が取得されています。

また、cURL関数はhttpのほかにhttpsによるSSL/TSL認証にも対応しています。

GETメソッドとは

HTTPリクエストでウェブサーバにさまざまな要求を行うときに、GETメソッドは使用されます。

たとえば、HTMLファイルや画層、動画などのデータを取得するときによく使われます。

先程紹介したcURLの処理はGETメソッドによりWebサーバへアクセスしています。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$res =  curl_exec($ch);
curl_close($conn);

POSTメソッドとは

POSTメソッドは、GETメソッド同様にウェブサーバに要求を行うときに使用します。

GETメソッドとの違いとしては、HTTPリクエストのbody要素にデータ内容を含み、テキストやバイナリのデータで送信することも可能です。

POSTメソッドは、以下のように指定します。

$url = "http://www.google.co.jp/";

//cURLセッションを初期化する
$ch = curl_init();

//送信データを指定
$data = array('samurai' => 1);

//URLとオプションを指定する
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

//URLの情報を取得する
$res =  curl_exec($ch);

//結果を表示する
var_dump($res);

//セッションを終了する
curl_close($ch);

POSTメソッドを指定するにはcurl_setoptの第二引数で、CURLOPT_POSTをtrueで指定にすると、POSTが有効になります。

また、POSTで送信するデータは、オプションCURLOPT_POSTFIELDSと送信データを指定する必要があります。

Cookieオプションの指定方法

クッキー(Cookie)とは、ウェブサイトにアクセスしたときにユーザーの訪問回数やアクセス日時などの閲覧情報を保存することを言います。

cURLでは、オプションでサーバからのクッキーの情報取得することができます。

以下にクッキー情報を取得するサンプルを記述します。

//cURLセッションを初期化する
$ch = curl_init();

//URLを指定する
curl_setopt($ch, CURLOPT_URL, $url);

//クッキー情報を取得するファイルを指定する
$cookiefile = 'cookie.txt';
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);

//URLの情報を取得する
$res = curl_exec($ch);

//セッションを終了する
curl_close($ch);

クッキーの情報を取得するにはcurl_setoptメソッドのオプションにCURLOPT_COOKIEJARと、CURLOPT_COOKIEFILEを設定し、ファイル名を指定します

このサンプルを実行すると、指定したcookie.txtに以下のように取得したクッキーの情報が書き込まれています。

# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

---省略---

Proxyオプションの指定方法

プロキシ(Proxy)とは、代理の意味でクライアントとサーバの間に存在する中継サーバのことを言います。

中継サーバを使用することで、クライアントの変わりにウェブページにアクセスすることができます。

プロキシの詳細な説明については、以下のページで詳しく解説しています。
http://wa3.i-3-i.info/word1752.html

cURLでは、オプションでプロキシの設定が可能です。

cURLでプロキシ経由で接続するには、以下のように指定します。

//cURLセッションを初期化する
$ch = curl_init();

//URLを指定する
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//プロキシを有効にする
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
//プロキシに接続するポート番号を指定
curl_setopt($ch, CURLOPT_PROXYPORT, '8080');
//プロキシのアドレスを指定する
curl_setopt($ch, CURLOPT_PROXY, 'http://www.xxx.xxx');
//プロキシに接続するためのIDとパスワードを指定する
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'xxxx');

//URLの情報を取得する
$res = curl_exec($ch);

//セッションを終了する
curl_close($ch);

まとめ

ここではPHPでHTTPリクエストを実行できるcURL関数の基本的な使い方や、

クッキー情報を取得したり、プロキシ経由で接続する方法などについて解説しました。

cURL関数は、ウェブサーバとHTTPリクエストによるやり取りを行うときに必須の機能ですので、仕組みはよく理解しておきましょう。

もしcURL関数の使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説