Несколько действий cURL, один и тот же сеанс - PullRequest
2 голосов
/ 11 октября 2010

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

Я загружаю файлы за логином, поэтому

а) Необходимо авторизоваться б) Загрузить изображение (я)

Вот что у меня сейчас

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

Все помогает, высоко ценится.

1 Ответ

2 голосов
/ 12 октября 2010

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

$ download_str = 'wget -O'. $ сохранить. $ id. '.jpg --cookies = off --header "Cookie: PHPSESSID ='. $ session_id. '"'. $ IMAGE_URL;

shell_exec ($ download_str);

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