Entwickler-Ecke

Internet / Netzwerk - Login mit IDHTTP schlägt fehl


the-kecks - Sa 16.05.09 13:53
Titel: Login mit IDHTTP schlägt fehl
hi,
aus dem Tutorial von Delhpi-treff und den bereits existierenden themen hier habe ich mir ein programm zusammengebastelt was sich hier einloggt. nur funktioniert das ganze noch nicht so wie ich es will^^

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var
HTMLCode : String;
sl : TStringlist;
begin
 sl:=TStringList.Create;
 IdHTTP1.HandleRedirects:=true;
 IdHTTP1.allowcookies:=true;
 sl.Add('username='+edit1.Text);
 sl.Add('password='+edit2.Text);
 IdHTTP1.Post('http://www.delphi-forum.de/login.php', sl);
 HTMLCode :=IdHTTP1.Get('http://www.delphi-forum.de/index.php');
 memo1.lines.add(HTMLCode);
end;

ich bleibe ausgeloggt (erkennt man ja am html code) :(

mfg


Xentar - Sa 16.05.09 15:02

Kann es sein, dass du noch so nen Cookie Manager, oder wie das Ding heißt, brauchst?


the-kecks - Sa 16.05.09 15:43

hab den cookiemanager mal mit rein genommen. bin immernoch ausgeloggt. desweiteren wenn ich ein OnNewCookie ereignis erstellen will kommt der fehler "Undefinierter Bezeichner: 'TIdCookieRFC2109'". vll muss ich ja noch irgend ne information zum login hinzufügen...hat da jmd ne idee?

mfg


Raid - Sa 16.05.09 17:10

[Edited]


Delphi-Quelltext
1:
2:
3:
IdHTTP1.CookieManager := IdCookieManager1;
IdHTTP1.HandleRedirects := true;
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
IdCookieManager1 -> Events -> OnNewCookie:

uses
  IdCookie;

procedure TForm1.IdCookieManager1NewCookie(ASender: TObject; ACookie: TIdCookieRFC2109; var VAccept: Boolean);
begin
  ACookie.Path := '\';
end;



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  Params: TStringList;
  HTMLCode: string;
begin
  Params := TStringList.Create;
  try
    Params.Add('username=Raid');
    Params.Add('password=GehtNimandWasAn!');

    HTMLCode := IdHTTP1.Post('http://www.delphi-forum.de/login.php', Params);

    if HTMLCode <> '' then
      { mach was }
  finally
    Params.Free;
  end;
end;


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


the-kecks - Sa 16.05.09 18:26

erstmal thx für deine mühe raid. aber ich bleibe immernoch ausgeloggt.
1. der quelltext der seite ist immernoch der gleiche --> ausgeloggt
2. der string HTMLcode ist immer ''
das mit idcookie klappt jetzt!
hierzu hab ich mir einen kleinen "log" geschrieben/rausgesucht ;)

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
  Memo1.Lines.Add('New Cookie:');
  Memo1.Lines.Add('  Comment: '+ACookie.Comment);
  Memo1.Lines.Add('  Version: '+ACookie.Version);
  Memo1.Lines.Add('  CookieText: '+ACookie.CookieText);
  Memo1.Lines.Add('  ServerCookie: '+ACookie.ServerCookie);
  Memo1.Lines.Add('  ClientCookie: '+ACookie.ClientCookie);
  Memo1.Lines.Add('  Domain: '+ACookie.Domain);
  Memo1.Lines.Add('  Expires: '+ACookie.Expires);
  Memo1.Lines.Add('  CookieName: '+ACookie.CookieName);
  Memo1.Lines.Add('  Path: '+ACookie.Path);
  Memo1.Lines.Add('  Value: '+ACookie.Value);
  Memo1.Lines.Add('  DisplayName: '+ACookie.DisplayName);
  Memo1.Lines.Add('');

da kommt raus:
Zitat:

New Cookie:
Comment:
Version:
CookieText: df_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; path=\; domain=http://www.delphi-forum.de
ServerCookie: df_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D; path=\; domain=http://www.delphi-forum.de
ClientCookie: df_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D
Domain: http://www.delphi-forum.de
Expires: Sun, 16-May-2010 16:24:59 GMT
CookieName: df_data
Path: \
Value: a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D
DisplayName: TIdCookieRFC2109

New Cookie:
Comment:
Version:
CookieText: df_; path=\; domain=http://www.delphi-forum.de
ServerCookie: df_; path=\; domain=http://www.delphi-forum.de
ClientCookie: df_
Domain: http://www.delphi-forum.de
Expires:
CookieName: df_sid
Path: \
Value: a9d1885700038791c596fa8a6feaed75
DisplayName: TIdCookieRFC2109


mfg


Raid - Sa 16.05.09 20:11

Ich denke mal beim Login fehlen Parameter. Beim Analysieren kam :arrow: "username"; "password"; "redirect"; "login" raus.

Versuch es mal so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  HTMLCode: string;
  Params: TStringList;
begin
  Params := TStringList.Create;
  try
    Params.Add('username=' + Edit1.Text);
    Params.Add('password=' + Edit2.Text);
    Params.Add('redirect=');
    Params.Add('login=Login');

    HTMLCode := IdHTTP1.Post('http://www.delphi-forum.de/login.php', Params);
  finally
    Params.Free;
  end;
end;


the-kecks - Sa 16.05.09 20:23

//hab jetz mal versucht meinen post mit dem programm zu editieren...es klappt falls ihr das lest :D


Raid - Sa 16.05.09 20:47

Nein, aber ein FireFox addon, das nennt sich "Live HTTP Headers". Leicht zu verstehen!

-> Downloaden
-> Installieren
-> FireFox neustarten
-> Extras -> "Live HTTP Headers" -> die CheckBox "Mitscheiden" checked
-> Action ausführen während das "Live HTTP Headers" fenster auf ist. Mit Action ist Login Button drücken gemeint.


the-kecks - Sa 16.05.09 21:14

ok thx hat alles geklappt!
kann jetzt posten (poste gerade mit meinem programm) und editieren...und natürlich login/logout ;)

mfg