基本上,我有一個腳本登錄到網站並下載文件。非常坦率的。不幸的是,我的代碼中缺少某些功能,導致它無法正常工作。PHP:cURL:無法同時登錄和下載文件
當我運行它,我回來輸出到我的文件,這正是我會得到我的瀏覽器,如果我試圖訪問該文件的鏈接,而不登錄是在HTML頁面;訪問被拒絕,您必須登錄等。
但是,如果我通過註釋掉文件下載請求自行運行腳本的第一部分,然後重新運行腳本的全部內容,我可以我應該下載文件,所以我知道它在某種意義上是有用的。當我運行整個腳本時,它似乎並不想讓我登錄。
// Log me in
curl_setopt($handle, CURLOPT_URL, $login_url);
curl_setopt($handle, CURLOPT_REFERER, $admin_url);
curl_setopt($handle, CURLOPT_COOKIEJAR, $Cookie_Location);
curl_setopt($handle, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($handle, CURLOPT_TIMEOUT, 60);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
// Grab the file
curl_setopt($handle, CURLOPT_URL, $csv_loc);
curl_setopt($handle, CURLOPT_FILE, $csv_handle);
echo $response = curl_exec($handle);
curl_close($handle);
所以我可以登錄,然後重新運行腳本並下載文件,但是我不能同時執行這兩個操作。我嘗試了各種不同的額外捲曲選項,例如COOKIEJAR和COOKIEFILE,以及FOLLOWLOCATION和REFERER,這是我唯一的直覺,因爲我的代碼爲什麼不起作用。東西在我的「搶檔」代碼是打破我的記錄中,或表現得像我沒有登錄
編輯:解決。
我已經決定把該解決方案,以便其他人避免我做了同樣的錯誤。
所有我需要做的是單獨的我的要求,像這樣;
// Log me in
curl_setopt($handle, CURLOPT_URL, $login_url);
curl_setopt($handle, CURLOPT_REFERER, $admin_url);
curl_setopt($handle, CURLOPT_COOKIEJAR, $Cookie_Location);
curl_setopt($handle, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($handle, CURLOPT_TIMEOUT, 60);
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
echo $response = curl_exec($handle);
// Grab the file
curl_setopt($handle, CURLOPT_URL, $csv_loc);
curl_setopt($handle, CURLOPT_FILE, $csv_handle);
curl_exec($handle);
curl_close($handle);
首先,curl_exec將我登錄到站點,然後第二個人抓住並下載我的文件。然後我只需關上手柄。
您可以在同一個腳本中創建兩個請求... –