2012-03-28 5 views
0

У меня есть успешное соединение с использованием cURL, но я пытаюсь загрузить файл и его не работает. Я знаю, что это файл cookie, потому что когда я открываю загруженный файл, он содержит авторизованное обязательное сообщение. Однако начальная проверка подлинности работает. любые мыслиphp cURL cookie save empty

// Create a curl handle to a non-existing location 
$ch = curl_init('https://xxxx/'); 


// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 


// ENABLE HTTP POST 
curl_setopt ($ch, CURLOPT_POST, 1); 

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD 
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'user=xxx&password=xxx'); 

// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 



curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 

$fp = fopen("status.xml", "w"); 

curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_HEADER, 0); 


if(curl_exec($ch) === false) 
{ 
    echo 'Curl error: ' . curl_error($ch); 
} 
else 
{ 
    echo 'Operation completed without any errors'; 
} 


curl_close($ch); 


fclose($fp); 

ответ

1

CURLOPT_COOKIEFILE является для чтения печенья, CURLOPT_COOKIEJAR для письма.

curl_setopt ($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt'); 

Убедитесь, что вы имеете полный путь для печенья файл и иметь разрешение быть написано

+0

На самом деле я получил его на работу, но что-то странное происходит. Загруженный файл содержит страницу входа, а не файл xml, который я хочу загрузить. Что я делаю не так. Спасибо – user1019144

+0

, если иногда работайте, а иногда нет, это значит, что это связано с тем сервером, который вы пытаетесь получить. Я не могу сказать ничего. Проанализируйте его и посмотрите, чего не хватает. – safarov

+0

Если вы не используете cookie, который вы получите, удалите строку 'CURLOPT_COOKIEFILE' – safarov

1

Куки информация просто быть сохранены в файл после того, как ручка закрыта, как это сказано в инструкции:

CURLOPT_COOKIEJAR => Имя файла для сохранения всех внутренних файлов cookie при закрытии дескриптора, например после вызова curl_close.

Manual: curl_setopt Кроме того, вы, возможно, придется принять это во внимание:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);