Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cURL和PHP下载登录后的文件_Php_Curl - Fatal编程技术网

使用cURL和PHP下载登录后的文件

使用cURL和PHP下载登录后的文件,php,curl,Php,Curl,我正在尝试使用cURL和PHP下载一个登录后的文件。我能够连接到服务器并使用CURLOPT_POST正确登录;此外,我的文件下载正确。但是,内容已损坏,无法打开。另一方面,文件下载到服务器上,如果这个工具在公共web服务器上,我将如何使用curl将文件下载到用户的本地机器上 // POST data from JSTOR Tool $username = $_POST['username']; $password = $_POST['password']; $st

我正在尝试使用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);为了防止重定向将我抛出

您好,我正在使用您的脚本从cgi服务器下载配置文件,我正确登录,但无法下载该文件,它似乎再次检查了凭据,因此我无法下载。另一方面,我可以从同一台服务器下载一个简单的图像,但不能从这样的url下载