Servus,
stehe im Moment vor einem nicht ganz einfachen Problem bzgl. cURL und Download.
Ich verwalte eine recht große Website, die mehrere XML-Dateien verarbeitet, die auf einem anderen Server liegen. Dies war auch bisher nie ein Problem, doch seit kurzem sind diese XML-Daten nur noch nach einem Login downloadbar. Folglich funktioniert das Script nicht mehr wie bisher.
Da ich die Zugangsdaten natürlich besitze, dachte ich mir, das Script um einen automatischen Login auf der Seite per cURL zu erweitern, um danach wie gewohnt die XML-Dateien herunterzuladen.
Doch irgendwie scheint der Login nicht zu funktionieren, oder die eingeloggte Session bleibt nicht lang genug erhalten. Ich kann nicht genau sagen wo das Problem liegt, da cURL keine Fehlermeldungen ausgibt.
Ich sehe nur, dass sich trotz vermeidlich eingeloggtem Script die XML-Dateien nicht downloaden lassen. Ich hab bisher noch keine Erfahrung mit cURL, nehme also an, dass ich irgendwas falsch mache
Hier ist der relevante Teil meines Scripts:
[...]
// INIT CURL
$ch = curl_init();
// SET URL FOR THE POST FORM LOGIN
curl_setopt($ch, CURLOPT_URL, 'http://LOGINSEITE/LOGIN');
// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);
// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'loginControl$textBoxID=USERNAME&loginControl$textBoxPW=PASSWORT');
// 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);
// EXECUTE 1st REQUEST (FORM LOGIN)
$store = curl_exec ($ch);
// XML Dateien kopieren
$Links = getTable("SELECT spielplan,tabelle,team,saison FROM spielplan_links");
for($i=0;$i<count($Links);$i++)
{
$xmlfilename = "Spielplan_".str_replace("ä","a",$Links[$i]['team'])."_".$Links[$i]['saison'].".xml";
copy($Links[$i]['spielplan'],"../xml/".$xmlfilename);
echo $xmlfilename." kopiert.<br>";
$xmlfilename = "Tabelle_".str_replace("ä","a",$Links[$i]['team'])."_".$Links[$i]['saison'].".xml";
copy($Links[$i]['tabelle'],"../xml/".$xmlfilename);
echo $xmlfilename." kopiert.<br>";
flush();
}
[...]
// CLOSE CURL
curl_close ($ch);
Alles anzeigen
Kürze Erläuterung:
Script loggt sich auf der Seite ein.
Anschließend folgt der alte Teil des Scripts, der URLs aus einer Datenbank ausliest, und dann per copy() versucht die XML-Daten vom Server zu holen (was fehlschlägt).
(Die Logindaten und die Website wo ich mich einlogge habe ich natürlich hier zensiert)
Wo liegt mein Denkfehler, bzw. Problem?
Danke,
Lizzard