簡體   English   中英

PHP CURL登錄和下載文件代碼不起作用

[英]PHP CURL Login and Download file code not working

我正在嘗試登錄網站並下載一個csv文件,登錄似乎有效,但是csv文件未下載,當我手動執行這些操作時,我可以毫無問題地下載該文件。 它不給出任何錯誤消息,並且var_dump輸出顯示“ true”

誰能幫我解決這個問題,謝謝

define( 'LOGINURL', 'http://www.highlite.nl/user/login' );
define( 'LOGINFIELDS', 'Login=xxxxxx&Password=xxxx&LoginButton=LoginButton' );
define( 'DWNLDURL', 'http://www.highlite.nl/silver.download/download/products_v2_0.csv' );
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$fp = fopen("/tmp/import.csv", "w");                  

/* STEP 2. visit the login page to authenticate and set the cookie properly */
$ch = curl_init( LOGINURL );
curl_setopt( $ch, CURLOPT_COOKIESESSION, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, LOGINFIELDS );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec( $ch );

/* STEP 3. request download */
$ch = curl_init();
curl_setopt( $ch, CURLOPT_COOKIEFILE, $ckfile );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_URL,DWNLDURL);
curl_setopt($ch, CURLOPT_FILE, $fp);
//curl_setopt($ch, CURLOPT_URL, $ch);
$result = curl_exec( $ch ); 

var_dump($result);

請嘗試這個

define( 'LOGINURL', 'http://www.highlite.nl/user/login' );
define( 'LOGINFIELDS', 'Login=xxxxxx&Password=xxxx&LoginButton=LoginButton' );
define( 'DWNLDURL', 'http://www.highlite.nl/silver.download/download/products_v2_0.csv' );
$ckfile = tempnam ("/tmp", "CURLCOOKIE");
$fp = fopen("/tmp/import.csv", "w+"); // Changed w to w+                  

/* STEP 2. visit the login page to authenticate and set the cookie properly */
$ch = curl_init( LOGINURL );
curl_setopt( $ch, CURLOPT_COOKIESESSION, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, LOGINFIELDS );
curl_setopt( $ch, CURLOPT_POST, 1 );
curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec( $ch );

/* STEP 3. request download */ /*Updated code*/
$ch = curl_init(DWNLDURL);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
$result = curl_exec( $ch ); 
curl_close($ch);
fclose($fp);
var_dump($result);

嘗試在您的fopen函數中添加'w+'

將會 ..

$fp = fopen("/tmp/import.csv", "w+");   

成功時,fopen函數將返回文件指針資源。 請注意,我們傳入“ w +”作為第二個參數,因為“ w +”告訴PHP我們要打開文件進行讀寫。

成功設置文件指針之后,我們可以通過CURLOPT_FILE選項將其移交給cURL,就像您已經在做的一樣。

//Pass our file handle to cURL.
curl_setopt($ch, CURLOPT_FILE, $fp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM