![]() |
idHTTP.Post geht nicht
Hallo ;)
Ich wollte mir ein kleines Tool schreiben um mir das Leben ein wenig zu erleichtern.. Allerdings scheitere ich beim Login auf eine Seite. Mit dem FF-Addon Live HTTP Headers kam folgendes raus:
Code:
Nun stellt sich mir die Frage: Wie logge ich mich dort ein, auf der Seite?
http://seite.com/
POST / HTTP/1.1 Host: seite.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Cookie: PHPSESSID=ce93ce360191efb3f57288d8db3cXXX Content-Type: application/x-www-form-urlencoded Content-Length: 56 username=ZENSIERT&password=ZENSIERT&login=&captcha=Captcha Habe es mit:
Code:
probiert, er gibt mir auch keinen Fehler etc. aus, aber der Login scheint nicht erfolgreich zu sein (da der Schritt danach, der 100% klappt, nicht ausgeführt wird).
procedure TForm1.Button1Click(Sender: TObject);
var slLogin: TStringList; begin slLogin:=TStringList.Create(); slLogin.Add('?username=' + edNick.text); slLogin.Add('&password=' + edPW.text); slLogin.Add('&login=&captcha=Captcha'); try idHTTP1.Post('http://seite.com/', slLogin); finally slLogin.Free; end; end; Was mich verwirrt ist, dass es keine login.php oder ähnliches gibt, sondern nur das / danach kommt. Freue mich über Hilfe PS: Nur die seite durch "Seite" ersetzt, rest ist original. |
AW: idHTTP.Post geht nicht
Hallo,
gleich vorweg: Beachte die AGB der Website, denn oftmals ist ein automatischer Login nicht zulässig. Sonst kannst du richtig Ärger bekommen. Da mein Delphi mal wieder brutal rumzickt (vielleicht muss mal ein XE her), hier ungetesteter Code:
Delphi-Quellcode:
Eine login.php muss es nicht geben. Es kann auch sein, dass z.B. die index.php den Login durchführt. Diese wird meist aufgerufen, wenn keine PHP-Datei angegeben wird. Das lässt sich natürlich auch ändern und es können auch andere Dateien wie index.php5 o.ä. sein.
procedure TForm1.Login;
var slLogin: TStringList; begin slLogin := TStringList.Create; try slLogin.Values['username'] := edNick.text; slLogin.Values['password'] := edPW.text; slLogin.Values['login='] := ''; // kannst auch eglassen, nehme ich an slLogin.Values['captcha'] := 'Captcha'; IdHTTP1.Post('http://seite.com/', slLogin); finally FreeAndNil(slLogin); end; end; |
AW: idHTTP.Post geht nicht
Danke schonmal für die Antwort ;)
Habe deinen Code gerade getestet, funktioniert jedoch immernoch nicht. Habe, um herauszufinden ob es klappt, einmal vor dem einloggen den Quelltext geholt und nach dem "einloggen", beide identisch. Schade, danke trotzdem für die Hilfe. Kleine Frage noch: Muss man bei einer TStringList nicht die "&" bzw. als erstes das "?" einfügen? Grüße sh0xX |
AW: idHTTP.Post geht nicht
Normalerweise muss man das nicht.
Der erste Parameter ist generell vom "?" von der URL getrennt, alle weiteren durch ein "&". Die könntest du auch beliebig vertauschen. Das nur, damit du weißt, dass diese Trennzeichen nicht "fest" sind. Bzw. es gibt auch Situationen, bei denen die Reihenfolge der Parameter fest sein muss, aber das ist sehr selten der Fall. |
AW: idHTTP.Post geht nicht
Ah okay, danke ;)
Ich dachte die müsste man immer mit eingeben (habe mich damit noch nie so wirklich beschäftigt, immer nur mal so ein wenig benutzt, sofern es um Seiten mit z.B. einer login.php ging war dies bisher auch kein Problem. Ich versuche einfach noch ein wenig rum, vielleicht schaff ich mit etwas glück ja den Login ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz