2012-03-28 20 views
0

Ich habe eine erfolgreiche Verbindung mit cURL gemacht, aber ich versuche, eine Datei herunterzuladen und es funktioniert nicht. Ich weiß, es ist der Cookie, denn wenn ich die heruntergeladene Datei öffne, enthält sie eine autorisierte erforderliche Nachricht. Die anfängliche Authentifizierung funktioniert jedoch. irgendwelche Gedankenphp cURL Cookie Speichern leer

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

Antwort

1

CURLOPT_COOKIEFILE zum Lesen von Cookies ist, ist CURLOPT_COOKIEJAR zum Schreiben.

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

Stellen Sie sicher, vollständigen Pfad für Cookie-Datei und es Erlaubnis geschrieben werden muß

+0

Eigentlich habe ich es zu arbeiten, aber etwas seltsam passiert. Die heruntergeladene Datei enthält die Anmeldeseite und nicht die XML-Datei, die ich herunterladen möchte. Was mache ich falsch. Danke – user1019144

+0

wenn manchmal arbeiten und manchmal nicht, das heißt es bezieht sich auf den Server, den Sie versuchen, Daten zu erhalten. Ich kann nichts sagen. Analysieren Sie es und sehen Sie, was Sie vermissen – safarov

+0

Wenn Sie nicht Cookie verwenden, dass Sie löschen CURLOPT_COOKIEFILE Zeile – safarov

1

Plätzchen Informationen nur in der Datei gespeichert werden, nachdem der Griff geschlossen, wie es in Hand sagte:

CURLOPT_COOKIEJAR => Der Name einer Datei, um alle internen Cookies zu speichern, wenn das Handle geschlossen wird, z nach einem Aufruf von curl_close.

Manual: curl_setopt Außerdem kann man dies in Betracht ziehen müssen:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);