Thema: Delphi Login mit IdHTTP

Einzelnen Beitrag anzeigen

Kharlanki

Registriert seit: 9. Jul 2003
Ort: Düsseldorf
50 Beiträge
 
#1

Login mit IdHTTP

  Alt 28. Jun 2007, 19:08
Hi,

ich versuche gerade, mich automatisiert in eine Website einzuloggen.

Anfangs habe ich den Login-Prozess einem EmbeddedWB ueberlassen, habe mir die SessionID aus der weitergeleiteten URL rausgepopelt und diese dann bei allen weiteren Anfragen per IdHTTP.Get verwendet.
Jetzt will ich aber alles ueber ein IdHTTP erledigen... und hier komme ich nicht weiter.

Hier der Code des Login-Formulares:
Code:
<form method="POST" action="login.php">
<p align="center">[b]<font size="2" face="Verdana">Loginbereich

</font>[/b]</p>
<div align="center">
  <center>
  <table style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="3">
        <tr>
      <td width="100"><font size="2" face="Verdana">[b]Benutzername:[/b]</font></td>
      <td width="100"><input class="inputfeld2" name="user" maxlenght="20" size="20"></td>

    </tr>
    <tr>
      <td width="100"><font size="2" face="Verdana">[b]Passwort:[/b]</font></td>
      <td width="100"><input class="inputfeld2" type="password" name="pwd" maxlenght="20" size="20">
</td>
    </tr>
    <tr>
      <td colspan="2">
      <p align="center">

      <input type="submit" class="inputfeld2" value="Login" name="login"></td>
    </tr>
  </table>
  </center>
</div>
<p align="center">[url="passwort.php"]Benutzerdaten vergessen?[/url]</p>
<p align="center">[url="aktivlink.php"]Aktivierungslink erneut zuschicken[/url]</p>
Und so sieht mein Code aus:
Delphi-Quellcode:
begin
  oldct := http.Request.ContentType;
  http.Request.ContentType := 'application/x-www-form-urlencoded';
  try
    Ergebnis := TStringList.Create;
    http.HTTPOptions := http.HTTPOptions - [hoKeepOrigProtocol];
    Ergebnis.Clear;
    try
      try
        sl := TStringList.Create;
        try
          sl.Text := 'user=bla&pwd=fasel';
          FResult := HTTP.post ('http://www.irgendwas.de/login.php', sl);
        finally
          sl.Free;
        end;
      finally
        try
          if (HTTP.Connected) then
            HTTP.DisconnectSocket;
        except
        end;
      end;
    except
    end;
    Ergebnis.Add (AdjustLineBreaks(FResult));
  finally
    http.Request.ContentType := oldct;
  end;
  memPage.Lines.Clear;
  memPage.Lines.Text := Ergebnis.Text;
  Ergebnis.Free;
end;
Ich bekomme aber immer nur die Login-Seite zurueckgeliefert. Selbst, wenn ich falsche Login-Daten verwende, kommt keine Anzeige "Benutzername unbekannt", die beim manuellen Einloggen erscheint.

Laut Firefox LiveHTTPHeaders ergibt ein manueller Login:
Code:
[url]http://www.irgendwas.de/login.php[/url]

POST /login.php HTTP/1.1
Referer: [url]http://www.irgendwas.de/login.php?ref=[/url]
HTTP/1.x 302 Found
Location: ./members/loginbereich.php?sessionid=ad8f9603e14204719d7aec8e63e05e4f
----------------------------------------------------------
[url]http://www.irgendwas.de/members/loginbereich.php?sessionid=ad8f9603e14204719d7aec8e63e05e4f[/url]

GET /members/loginbereich.php?sessionid=ad8f9603e14204719d7aec8e63e05e4f HTTP/1.1
Referer: [url]http://www.irgendwas.de/login.php?ref=[/url]

HTTP/1.x 200 OK
----------------------------------------------------------
Irgendwelche Hinweise oder Gedankenanstoesse?
Gruss,
Matthias

  Mit Zitat antworten Zitat