POST Request
-
nun, ich möchte einen webbrowser schreiben, mit dem ich mich bei verschiedenen seiten einloggen kann (zum verwalten).
ich hab das mit den parametern jetzt auf mehreren seiten ausprobiert (hab die daten an das script geschickt, das in <form action=tatata.php> stand), allerdings wurde ich nie eingeloggt, d.h. ich hab keine neue seite bekommen
-
war bei dem form method=post oder method=get?
Weil bei get hängst du die Variablen einfach nur an deine URL tatata.php?user=meinname&pass=geheim
-
ich weiß, wäre es get wäre ich schon seit 2 monaten durch, aber es ist teilweise leider post
-
funktioniert es denn bei manchen?
schickst du auch wirklich alles formularfelder mit?
was bekommst du denn zurück, wenn es nicht funktioniert?
-
ich schicke alles mit imho (es ist auch ein "hidden" formularfeld dabei)
als ausgabe bekomme ich die loginseite wieder angezeigt
funktionieren tuts nur bei get
-
Vielleicht prüfen die den HTTP_REFERER, also od du auch von denen ihrer Seite kommst?
Oder setzen die irgendwelche Cookies?
-
ehehe, cookies werden gesetzt, macht das einen unterschied?
-
Ich will den Fehler jetzt nicht auf dich schieben, aber du hast von Posting zu Posting immer mehr "Parameter", des POST-Requestes, den ich ziemlich am Anfang mal geschrieben habe, weggelassen. Braucht man nicht, hab ich mir auch gedacht. Hab sie aber bei mir immer verwendet, da sie der IE genau so schickt.
Nach einem bisschen experimentieren:
zu einem Ordnungsgemäßen Reqest gehört scheinbar das "Attribut" "Content-Type" hinzu.So kommt bei mir die Login-Seite mit der Meldung/Beschwerde über ein falsches Passwort:
[cpp]
char passwort[256]={"deinpasswort"};
char benutzerid[256]={"benutzerid"};
int len;
len=sprintf( buffer, "POST http://www.klamm.de/partner/start_login.php HTTP/1.0\nAccept-Language: de\nContent-Type: application/x-www-form-urlencoded\nPragma: no-cache\nHost: [url=http://www.klamm.de\nContent-Length]www.klamm.de\nContent-Length[/url]: %d\n\nloginid=%s&passwd=%s\r\n",16+strlen(benutzerid)+strlen(passwort), benutzerid, passwort);
send(Socket, buffer, len, 0);[/cpp]
Mach das und es geht auch bei dir, versprochen
-
Vielleich schauen die, ob die Cookie-Daten gesetzt sind, und falls nicht kannst du dich nicht einloggen!
Cookies werden z.B. oft genutzt, um deine Session-ID zu übermitteln!
-
Noch ein Tipp, den ich dir vieleicht etwas früher hätte geben sollen(:D):
- Schreib einen mini Server, der auf irgendeinem Port auf einkommende Verbindunge wartet und alles empfangene anzeigt oder in einer Datei speichert.
- Geh nun auf die Login-Seite mit dem Login-Button.
- Starte deinen mini Server.
- Trage beim IE als HTTP-Proxy 127.0.0.1 als IP und die Portnummer des Servers als Port ein.
- Klick auf den Submitbutton.
--> Dein mini Server empfängt genau den Request, den der IE schickt. Den kannst du dann auch von deinem Prog aus senden.
-
Mal eine Frage: Wie groß ist Content-Length? Wie kommst du auf 16?