PHP、Smarty、ケータイサイトについて発信中。書籍 「Smarty動的webサイト構築入門」(技術評論社) 好評発売中
RSS icon Home icon
  • 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'];
    
    2007-07-24 admin No comments 02.PHP

    Leave a reply