2012-03-28 5 views
0

J'ai réussi à établir une connexion en utilisant cURL, mais j'essaie de télécharger un fichier et il ne fonctionne pas. Je sais que c'est le cookie parce que quand j'ouvre le fichier téléchargé, il contient un message requis autorisé. L'authentification initiale fonctionne bien. toute penséephp cookie cURL sauvegarde vide

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

Répondre

1

CURLOPT_COOKIEFILE est-il pour les cookies de lecture, CURLOPT_COOKIEJAR est pour l'écriture.

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

Assurez-vous de chemin complet pour le fichier cookie et avoir l'autorisation d'être écrit

+0

En fait, je l'ai eu à travailler, mais quelque chose de bizarre se passe. Le fichier téléchargé contient la page de connexion et non le fichier XML que je veux télécharger. Qu'est-ce que je fais mal. Merci – user1019144

+0

si parfois travailler et parfois non, cela signifie qu'il est lié à ce serveur que vous essayez d'obtenir des données. Je ne peux rien dire. Analysez-le et voyez ce qui vous manque – safarov

+0

Si vous n'utilisez pas cookie que vous avez supprimer la ligne – safarov

1

Information sur les cookies juste être enregistrées dans le fichier après la poignée fermée, comme il dit dans le manuel:

CURLOPT_COOKIEJAR => Le nom d'un fichier pour enregistrer tous les cookies internes à quand la poignée est fermée, par exemple après un appel à curl_close.

Manual: curl_setopt En outre, vous devrez peut-être prendre cela en considération:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);