Entwickler-Ecke
Internet / Netzwerk - Ich verzweifel an Post mit TidHttp!!
JinJitsu107 - Mi 26.11.08 18:11
Titel: Ich verzweifel an Post mit TidHttp!!
Also es sieht so aus.
Delphi kann ich schon länger, tut aber nicht viel zur Sache.
Mit Indy wollte ich jetzt mich ein wenig in Netwerk/Internetprogrammierung versuchen.
Also mein Anliegen ist eigentlich einfach.
Ein stinknormaler HTTP POST Vorgang um sich bei einer Seite anzumelden.
Ja ich weiß hattet ihr bestimmt schon oft. Hab ich auch viel gelesen. Hab ich probiert.
Aus irgendeinem Grund Funktioniert es nicht.
Ich bekomme als Antwort immer die gleiche login.php!
Am Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var Filestream : TIdMultiPartFormDataStream; RESPONSE : String; begin Filestream := TIdMultiPartFormDataStream.Create; Filestream.AddFormField('username', 'meinusrname'); Filestream.AddFormField('password', 'meinPw'); RESPONSE := idHTTP1.POST('http://www.pennerhilfe.de/login.php',Filestream); Memo1.Lines.Add(RESPONSE); end; |
Den Link lasse ich absichtlich drin.
Warum bekomme ich immer nur die login.php zurück?
Ich hab schon viel probiert, viele Varianten aber jedes mal das gleiche immer als Antwort die login.php.
Was mach ich falsch? Bin ich so doof?
Verzweifelten dank im Vorraus
Sirke - Mi 26.11.08 18:39
Ich kenne die Programmierung der Seite nicht, aber viele Anwendungen testen ein abgesendetes Formular per if-Anweisung auf das Value des Submit-Buttons.
Quelltext
1:
| if( isset($_POST['submit']) ) { ... |
Daher würde ich das als Test einfach mal mit anfügen:
Delphi-Quelltext
1:
| Filestream.AddFormField('submit', 'Login'); |
Eventuell hast du damit schon Glück ;-)
LG Sirke
Horst_H - Mi 26.11.08 18:46
Hallo,
bei so störrischen Seiten speichere ich Seite lokal und ersetze einfach "post" durch "get".
Dann starte ich die Seite, fülle irgendwelche Daten ein und siehe da, man sieht die Daten, welche übertragen werden sollen nach dem Fragezeichen:
"file://localhost/C:/Temp/login.php?username=sdfg&password=sdfg&submit=Login"
also Sirke's Ansatz trifft es.
Es ist aber auch nicht schwer zu finden:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| <form action="login.php" method="post"> <table> <tr> <td>Name</td> <td><input type="text" name="username" size="20" class="input" value=""/></td> </tr>
<tr> <td>Passwort</td> <td><input type="password" name="password" size="20" class="input" /></td> </tr>
<tr> <td colspan="2"><input type="submit" name="submit" value="Login" class="button"/></td> </tr> </table> |
Gruß Horst
matze - Mi 26.11.08 19:14
Die Eigenschaft FollowRedirects ist bei solchen Sachen auch immer am Besten auf True zu setzen.
Ausserdem denke ich, solltest du mal einen Cookiemanager einbinden. Denn die Seite wird auf jeden Fall ihre Sessions in einem Cookie speichern.
JinJitsu107 - Mi 26.11.08 19:39
Wow danke schonmal für die zahlreichen Antworten.
Ich werd gleich mal Feedback posten.
/Wunderbar es hat funktioniert.
Hatte gedacht, das der button überflüssig ist, da der post ja ohnehin gesendet wird.
Vielen dank!
Also das wäre ja geschafft.
Fordere ich aber jetzt einen Link mit http.get(..) an, bekomme ich eine Seite mit "Nicht eingeloggt".
Cookiemanager hab ich draufgesetzt mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm2.FormCreate(Sender: TObject); begin idhttp1.AllowCookies := true; idhttp1.CookieManager := IdCookieManager1; idhttp1.HandleRedirects := true;
end; |
Mit ner session id seh ich bei der seite auch nichts. Komisch aber vielleicht kann mit jemand weiter helfen.
Danke schonmal
JinJitsu107 - Mi 26.11.08 21:57
Keiner ne Ahnung?
//Ok also in dem coockie is doch ne session id.
Ich schau jetzt mal wie ich die übergeben muss.
////Ah das ist komisch. In dem Cookie ist die session id drin. Dann müsste die seite den Cookies doch lesen!
Versteh ich nicht! Hilfe!
/////Komplett ohne sinn jetzt funktioniert es. Habe eigentlich nichts geändert. Nun gut danke für die hilfe!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!