2012-03-28 92 views
0

我使用cURL进行了成功的连接,但我试图下载一个文件,但它不工作。我知道这是cookie,因为当我打开下载的文件时,它包含授权的必需消息。初始身份验证正在运行。任何想法php cURL cookie保存为空

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

请确保您有完整路径,Cookie文件,并有权写入

+0

其实我得到它的工作,但奇怪的事情正在发生。下载的文件包含登录页面,而不是我想要下载的xml文件。我究竟做错了什么。谢谢 – user1019144 2012-03-28 21:50:23

+0

如果有时工作,有时不工作,这意味着它与您试图获取数据的服务器有关。我不能说任何话。分析它,看看你丢失了什么 – safarov 2012-03-28 21:52:37

+0

如果你不使用cookie,你删除'CURLOPT_COOKIEFILE'行 – safarov 2012-03-28 21:53:47

1

饼干信息只保存到文件句柄关闭后,喜欢它的说明书上说:

CURLOPT_COOKIEJAR =>将所有内部cookie保存到句柄关闭时的文件名,例如在调用curl_close之后。

Manual: curl_setopt 此外,你可能需要考虑到这一点:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);