9

別の Web ページからコンテンツを取得する必要がある PHP アプリケーションがあり、現在読んでいる Web ページには Cookie が必要です。

Cookieを取得したらこの呼び出しを行う方法に関する情報を見つけました(http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a)が、生成方法がわかりませんクッキー、またはクッキーが保存される方法/場所。

たとえば、wget を介してこの Web ページを読み取るには、次のようにします。

wget --quiet --save-cookies cookie.file --output-document=who.cares \ 
  http://remoteServer/login.php?user=xxx&pass=yyy

wget --quiet --load-cookies cookie.file --output-document=documentiwant.html \
  http://remoteServer/pageicareabout.html

... 私の質問は、PHP で「--save-cookies」ビットを実行して、フォローアップ PHP の stream_context_create / file_get_contents ブロックで Cookie を使用できるようにする方法です。

$opts = array(http'=> array(
  'method'=> "GET",
  'header'=>
    "Accept-language: en\r\n" .
    "Cookie: **NoClueAtAll**\r\n"
  )
);

$context = stream_context_create($opts);
$documentiwant = file_get_contents("http://remoteServer/pageicareabout.html",
  0, $context);
4

2 に答える 2

14

Shazam-うまくいきました!Thxすっごく!他の誰かがこのページに出くわした場合に備えて、詳細に必要なものは次のとおりです。

  1. cURLをインストールします(私にとっては、ubuntuの「sudoapt-get installphp5-curl」と同じくらい簡単でした)
  2. 以前にリストされたPHPを次のように変更します。

    <?php
    
    $cr = curl_init('http://remoteServer/login.php?user=xxx&pass=yyy');
    curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($cr, CURLOPT_COOKIEJAR, 'cookie.txt');   
    $whoCares = curl_exec($cr); 
    curl_close($cr); 
    
    $cr = curl_init('http://remoteServer/pageicareabout.html');
    curl_setopt($cr, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($cr, CURLOPT_COOKIEFILE, 'cookie.txt'); 
    $documentiwant = curl_exec($cr);
    curl_close($cr);
    
    ?>
    

上記のコードスニペットは、http: //www.weberdev.com/get_example-4555.htmlの影響を強く受けています。

于 2008-10-29T16:27:40.097 に答える
5

おそらくcURLを使用したほうがよいでしょう。curl_setoptを使用して、Cookie 処理オプションを設定します。

これが 1 回限りのことである場合は、ライブ HTTP ヘッダーを備えた Firefox を使用してヘッダーを取得し、それを PHP コードに貼り付けることができます。

于 2008-10-29T14:47:42.607 に答える