2010-10-11 2 views
2

Прежде всего, я знаю curl_multi_init, но, насколько мне известно, он точно не делает то, что мне нужно.Несколько действий cURL, та же сессия

Im скачивании файлов за логином, так

а) Необходимо войти в систему б) Скачать файл (ы)

Вот что я в настоящее время

$login_url = 'https://us.test.com/Member/Login'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$login_url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login='.$this->username.'&password='.$this->userpass.'&signin=1&login_referer=none&remember_me=1'); 
curl_setopt($ch, CURLOPT_FAILONERROR,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/test/cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/test/cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_exec($ch); 

//Grab and Write the image 
$image = file_get_contents($image_url); 
$f = fopen($_SERVER['DOCUMENT_ROOT'].'/test/uploads/'.$id.'.jpg', 'w'); 
fwrite($f, $image); 
fclose($f); 


curl_close($ch); 

Все помогает, многое оценили.

+0

Вы получаете auth cookie через curl, но тогда вы не используете их для загрузки изображения. Вы пробовали загрузить его через curl, используя файл cookie из входа? – Fanis

ответ

2

Я понял, просто добавил идентификатор сеанса в cURL. Но быстрый и грязный способ:

$ download_str = 'wget -O'. $ save. $ id. '.jpg --cookies = off --header "Cookie: PHPSESSID ='. $ session_id. '"'. $ IMAGE_URL;

shell_exec ($ download_str);

Смежные вопросы