2012-03-28 82 views
0

私はcURLを使用して正常に接続しましたが、ファイルをダウンロードしようとしていますが動作しません。ダウンロードしたファイルを開くと、許可された必要なメッセージが含まれているため、クッキーがわかります。最初の認証は動作しています。任意の考えphp cURL cookie saving 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_COOKIEFILECURLOPT_COOKIEJARが書き込み用で、クッキーを読み取るためです。

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

クッキーファイルの完全なパスを持っていることを確認し、それが書き込まれるように権限を持って

+0

実際に私はそれが動作するようになったが、奇妙な何かが起こっています。ダウンロードしたファイルにはログインページが含まれており、ダウンロードしたいxmlファイルは含まれていません。私は間違って何をしています。ありがとう – user1019144

+0

場合によっては動作しない場合もあります。つまり、データを取得しようとしているサーバーに関連していることを意味します。私は何も言いません。それを分析し、あなたが逃したものを見てください – safarov

+0

'CURLOPT_COOKIEFILE'行を削除してしまうクッキーを使用しないと、 – safarov

1

クッキー情報ハンドルが閉じられた後、それは手動で言ったように、単に、ファイルに保存する:

CURLOPT_COOKIEJAR =>ハンドルが閉じられたときにすべての内部クッキーを保存するファイルの名前。 curl_closeを呼び出した後

Manual: curl_setopt あなたはこれを考慮する必要があるかもしれません、ほか:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);