вы уверены что не пишет?) или вы не там ищите файл с куками. у меня все пишет. на путь обратите внимание у меня он от корневой директории прописан тут я уже заменилРаботает!!! Завтра буду разбирать код, на первый взгляд ошибка была в том, что выводили через curl_exec страницу с формой авторизации, она редиректилась и авторизация слетала. Но куки в файл по-прежнему не выгружаются, поэтому как я понимаю нужно будет проводить авторизацию через curl перед открытием каждой парсингуемой страницы.
код ужасен но демонстрирует работу (после вывода просто листайте страницу там видна последовательность)
PHP:
<?php
header( 'Content-type: text/html; charset=utf-8' );
$useragent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36';
$login_url='http://xamillion.com/login/';
$headers=array(
'Host: xamillion.com',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
//'Accept-Encoding: gzip, deflate',
'Connection: keep-alive',
//'Content-Type: application/x-www-form-urlencoded'
);
if (ob_get_level() == 0) ob_start();
function curl_login($login_url,$post,$headers,$useragent,$referer='http://www.google.com'){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $login_url);//закомментить чтоб не логинилось повторно для теста
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
// curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/somepath/cook.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/somepath/cook.txt');
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
return $ch;
}
$post = array(
'login' => 'buhelp@mail.ru',
'password' => 'qwerty',
'log' => ''
);
function curl_get($url,$headers,$ch,$referer='http://www.google.com') {
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, false);
//curl_setopt($ch, CURLOPT_COOKIESESSION, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
$answer = curl_exec($ch);
//print $_COOKIE['PHPSESSID'];//не будет работать что логично))
print $answer;
flush();
ob_flush();
sleep(3);
//ob_end_clean();
//curl_close($ch);
}
$ch2=curl_login($login_url,$post,$headers,$useragent);
curl_get('http://xamillion.com/catalog/?razdel=3',$headers,$ch2);
curl_get('http://xamillion.com/catalog/',$headers,$ch2);
curl_get('http://xamillion.com/',$headers,$ch2);
curl_get('http://xamillion.com/logout/',$headers,$ch2);
curl_get('http://xamillion.com/catalog/?razdel=3',$headers,$ch2); // а тут уже разлогинены
ob_end_flush();
exit;