У меня есть PHP-приложение, которое нужно захватить с другой веб-страницы, а на просматриваемой веб-странице нужен куки-файл.
Я нашел информацию о том, как сделать этот вызов, когда у меня есть файл 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, чтобы я мог использовать куки-файл в последующем блоке stream_context_create / file_get_contents PHP:
$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);
Вероятно, вам лучше использовать cURL . Используйте curl_setopt для настройки параметров обработки файлов cookie.
Если это всего лишь одноразовая вещь, вы можете использовать Firefox с Live HTTP Headers, чтобы получить заголовок, а затем вставить его в свой PHP-код.
Шазам – это сработало! Thx soooo много! В случае, если кто-то другой натыкается на эту страницу, вот что нужно было подробно:
измените предыдущий 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 .