Сохранить куки для удаленных веб-страниц - PullRequest
9 голосов
/ 29 октября 2008

У меня есть PHP-приложение, которое должно получать содержимое с другой веб-страницы, а веб-странице, которую я читаю, нужен файл cookie.

Я нашел информацию о том, как сделать этот вызов, как только у меня будет файл cookie (http://groups.google.com/group/comp.lang.php/msg/4f618114ab15ae2a), однако я понятия не имею, как создать файл cookie или как / где файл cookie сохраняется.

Например, чтобы прочитать эту веб-страницу через wget, я делаю следующее:

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

... у меня вопрос, как мне сделать бит '--save-cookies' в PHP, чтобы я мог использовать cookie в последующем блоке PHP stream_context_create / file_get_contents:

$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);

Ответы [ 2 ]

14 голосов
/ 29 октября 2008

Shazam - это сработало! Спасибо очень много! В случае, если кто-то еще наткнется на эту страницу, вот что нужно было подробно:

  1. установить cURL (для меня это было как просто как 'sudo apt-get install php5-curl 'в Ubuntu)
  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.

5 голосов
/ 29 октября 2008

Вам, вероятно, будет лучше использовать cURL . Используйте curl_setopt для настройки параметров обработки файлов cookie.

Если это одноразовая вещь, вы можете использовать Firefox с Live HTTP Headers , чтобы получить заголовок, а затем вставить его в свой PHP-код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...