青木ITプランニング
PHP、Smarty、ケータイサイトについて発信中。書籍 「Smarty動的webサイト構築入門」(技術評論社) 好評発売中
-
PEAR HTTP_Client
PEARのHTTP_ClientとHTTP_Client_cookieManagerを使ったので、その覚書き。PHP4で使った。
簡略化したサーバー構成図?
下図のSV1のスクリプトで、HTTP_Clientを使った。SV2はセッションを使うので、SV2用のセッションを保存/復元もしたい。クライアント
↑↓
SV1 ゲートウェイ的webサーバー
↑↓
SV2 実際にページのあるwebサーバー反則してしまった
本当は反則だが、直接 $client->_cookies を読み書きした。本来は
(1) $client->getCookieManager()で取得したインスタンスをセッションに保存する
(2) 次回リクエストで、セッションから復元して、HTTP_Client()の第三引数に渡す
のだが、セッションから復元できなかったので、やむなく $client->_cookiesを触った。原因は追求しなかった。
参考までに
実際のスクリプトから一部抜き出して、それなりに整えたもの。動作確認はしていない。function MW_http_client( $i_url ) { $header = array(); $header['User-Agent'] = $_SERVER['HTTP_USER_AGENT']; $header['Referer' ] = $_SERVER['HTTP_REFERER' ]; $client = new HTTP_Client( $null, $header ); $client->_cookieManager->_cookies = $_SESSION['http_client_cookies']; $client->setMaxRedirects( 2 ); switch ( $_SERVER['REQUEST_METHOD'] ) { case 'GET': $client->get( $i_url, $_GET ); break; case 'POST': $client->post( $i_url, $_POST ); break; } $res = $client->currentResponse(); $_SESSION['http_client_cookies'] = $client->_cookieManager->_cookies; return $res; }$res = MW_http_client( "http://xxxx/yyyy/" ); header( "Content-type: {$res['headers']['content-type']}" ); print $res['body'];Leave a reply



最近のコメント