cURLを利用する
PHPでのcURLを使った通信
PHP
// cURL リソース作成
$ch = curl_init();
// オプション設定
// URL指定
$url = 'http://example.com/';
curl_setopt($ch, CURLOPT_URL, $url);
/*
// 名前解決(Could not resolve host対応)
$domain = 'example.com';
$ip = gethostbyname($domain);
if (!empty($ip) && $ip !== $domain) {
$port = '443';
// example.com:80:127.0.0.1
curl_setopt($ch, CURLOPT_RESOLVE, [$domain . ':' . $port . ':' . $ip]);
curl_setopt($ch, CURLOPT_PORT, $port);
}
// パラメタ設定
curl_setopt($ch, CURLOPT_POST, true);
$data['foo'] = 'apple';
$data['bar'] = 'banana';
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
// ヘッダ設定
$headers = [
'Content-type: application/x-www-form-urlencoded'
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// UA設定
$ua = 'CCBot/2.0 (https://commoncrawl.org/faq/)';
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
// リファラ設定
$referer = 'http://example.jp/';
curl_setopt($ch, CURLOPT_REFERER, $referer);
// リダイレクトをたどる(指定したURLがリダイレクトしていた際にたどるか?)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Basic認証
$user = 'xxxxxxxx';
$pw = 'xxxxxxxx';
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pw);
// ヘッダを出力
curl_setopt($ch, CURLOPT_HEADER, true);
*/
// 結果を画面出力しない
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// HTTPS証明書対策、サーバー証明書の検証を行わない
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// タイムアウト(接続の試行を待ち続けるミリ秒数(デフォルト無期限) 30秒)
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
/*
// 情報出力
curl_setopt($ch, CURLOPT_VERBOSE, true);
// 出力先指定
$fp = fopen('/path/to/curl.log', 'w');
curl_setopt($ch, CURLOPT_STDERR, $fp);
*/
// 実行
$result = curl_exec($ch);
// エラー
if (curl_errno($ch) > 0) {
// エラー番号
echo curl_errno($ch);
// エラーメッセージ
echo curl_error($ch);
}
$info = curl_getinfo($ch);
// HTTPコード
echo $info['http_code'];
// echo curl_getinfo($ch, CURLINFO_HTTP_CODE);
// システムリソース解放
curl_close($ch);
echo $result;
セッションIDが必須となる情報の取得
PHP
// PHPSESSIDを渡す
$phpsessid = session_name() . '=' . $_COOKIE[session_name()];
$headers = [
'Cookie: ' . $phpsessid
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_COOKIE, $phpsessid);
session_write_close();