[英]Download File Behind Login using cURL and PHP
我正在尝试使用cURL和PHP在登录后下载文件。 我可以使用CURLOPT_POST连接到服务器并正确登录; 此外,我的文件下载正确。 但是,内容已损坏,无法打开。 附带一提,文件下载到服务器上,如果此工具位于公共Web服务器上,我将如何使用curl将文件下载到用户本地计算机上。
// POST data from JSTOR Tool
$username = $_POST['username'];
$password = $_POST['password'];
$start = $_POST['start'];
$end = $_POST['end'];
$loginUrl="https://www.jstor.org/action/doLogin";
print "Hello $username, your articles are downloading.";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.jstor.org/action/doLogin');
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "login=".$username."&password=".$password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp');
$answer = curl_exec($ch);
if (curl_error($ch)) {
echo curl_error($ch);
}
//another request to download the article, but preserves the session
curl_setopt($ch, CURLOPT_URL, 'http://www.jstor.org/stable/pdf/1.pdf');
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$data = curl_exec ($ch);
print_r($data);
$error = curl_error($ch);
curl_close ($ch);
$destination = "./files/test.pdf";
$file = fopen($destination, "w");
fputs($file, $data);
fclose($file);
print " Did it work?";
谢谢您的帮助!
我想到了。 我只需要curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,TRUE); 为了防止重定向将我拒之门外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.