Curl ve Php ile başlık ekli dosya indirme

1 Cevap php

Ben bazı istatistikleri toplamak için günlük bir web sitesine bağlıyorum, web sitesi çalışır. Net şeyler ilave zor yapmak. Ben ne yapmak istiyorum, bu süreci motorize olduğunu.

I go to http://www.thesite.com:8080/statistics/Login.aspx?ReturnUrl=%2Fstatistics%2Fdataexport.ashx%3FReport%3D99, (the return url is /statistics/dataexport.ashx?Report=99 decoded). The Login.aspx displays a form, in which I enter my user/pass and when the form is submitted the dataexport.ashx starts to download the file directly. The filename delivered is always statistics.csv.

Ben şimdi bu bir kaç gün ile denemişlerdir. Herhangi bir kaynak var mı ya da herkes gelecek denemelisiniz ne ipucu çeşit var mı?

İşte benim kod kısmı.

<?php 
// INIT CURL
$ch = curl_init();

// SET URL FOR THE POST FORM LOGIN
curl_setopt($ch, CURLOPT_URL, $url);

// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
$viewstate = urlencode('/wEPDwUKM123123daE2MGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFGG1fTG9naW4kTG9naW5JbWFnZUJ1dHASdasdRvbij2MVoasdasdYibEXm/eSdad4hS');
$eventval = urlencode('/wEWBAKMasd123LKJJKfdAvD8gd8KAoCt878OED00uk0pShTQHkXmZszVXtBJtVc=');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "__VIEWSTATE=$viewstate"."__EVENTVALIDATION=$eventval&UserName=myuser&Password=mypassword");

// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
# not to print out the results of its query.
# Instead, it will return the results as a string return value
# from curl_exec() instead of the usual true/false.
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

// FOLLOW REDIRECTS AND READ THE HEADER
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, true);

// EXECUTE REQUEST (FORM LOGIN)
$store = curl_exec ($ch);

// print the result
print_r($store);

// CLOSE CURL
curl_close ($ch);
?>

Thanks Trikks

1 Cevap

Ayrıca bir sonraki isteği ile birlikte çerez göndermek CURLOPT_COOKIEFILE kullanmanız gerekir. Eğer doğru hatırlıyorum Başka bir şey ASPX __ ViewState gibi değişkenler için benzersiz bir değeri her zaman set olduğunu ifade etti. Bu 2 işaretçiler yardımcı olmadığını görmek.