PHP で、ダイジェスト認証(Digest Auth)をする HTTP クライアント

PHP で、ダイジェスト認証(RFC2617)付きのサイトにアクセスするにはどうしたらいいのだろう? まずは PHP で、Perl でいうところの LWP::UserAgent に相当するものはないのだろうか?と探していたところ、あった。CURL というのがそれで、libcurl パッケージをインストールしておく必要があるとのこと。私は、Fedora Core 6 を使っているのだが、Fedora Core 6 をインストールしたときに開発パッケージをなんでもかんでも入れておいたので特に何もする必要はなかった(苦笑)。 とにかくまずは CURL が PHP で動けば、あとはプロトコルとして HTTP、HTTPS(SSL/TLS)、FTP、Telnet、LDAP プロトコルでアクセスするクライアントを作れるようだ。 CURL では HTTP だと、GET、POST、PUT、FTP アップロード、フォームからのアップロード、Proxy、cookie、ユーザ名とパスワードによる基本認証/ダイジェスト認証、HTTP(または HTTPS)の認証…と、フルサポートするようだ。 以下は、「PHP からDigest 認証付きのサイトにユーザー名とパスワードを認証して送信してアクセスする HTTP クライアント」の例。サーバ側の処理はググったらたくさん出てきたけど、PHP での HTTP クライアントはあまり例がなかった。
<?php
// アクセスする URL
$url = 'https://yourdomain.com/xxx...';
//
// 認証されるユーザー名
$username = 'ここにユーザー名を書く';
// 認証パスワード
$password = 'ここにパスワードを書く';

// 初期化
$ch = curl_init();
// オプションとして CURLAUTH_ANY / CURLAUTH_BASIC / CURLAUTH_DIGEST の中から選択
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
// ユーザー名とパスワードを指定
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
// アクセスする URL を設定
curl_setopt($ch, CURLOPT_URL, $url);
// curl_exec を実行したときに戻り値として成功(TRUE)/失敗(FALSE)ではなく、HTMLなどの値(文字列)を返すようにする
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// サイトにアクセスする
$data = curl_exec($ch);
// 結果を表示する
print $data;
// 接続を閉じる
curl_close($ch);

?>
トラックバック URL: https://perltips.twinkle.cc/trackback/155
Posted on 2006-12-22 by yas |
PHP で、HTTP クライアントを作る方法
Trackback from Perl Tips: PHP で、HTTP クライアントを作るには、以下の2通りがある。 fopen......
Posted by Perl Tips (未認証ユーザ) on 2007/05/15(火) 19:16
PHP で、サイトにアクセスして HTML を取得する方法
Trackback from Perl Tips: PHP の場合は、fopen 関数の引数に URL を指定すればその URL ......
Posted by Perl Tips (未認証ユーザ) on 2007/05/15(火) 19:16