Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Einloggen mit Indy 10 (https://www.delphipraxis.net/133840-einloggen-mit-indy-10-a.html)

blooddog_90 10. Mai 2009 14:16


Einloggen mit Indy 10
 
Guten Tag alle zusammen,

ich würde gern ein Programm erstellen, welches dem Benutzer erlaubt sich auf einer Seite einzuloggen.
Zu dem Zweck werde ich Indy 10 verwenden.

Die Login-Form sieht so hier aus:

Code:
<form action="/misc/login" method="post">
   <input type="text" class="textfield" name="user" value="Benutzername"/>
   <input type="password" class="textfield" name="pw" value="Passwort"/>
       <input type="hidden" name="xyz" value="132m2e" />
        <input type="checkbox" name="slo" id="slo" value="1"/> Login speichern


<input type="submit" value="Einloggen" class="button" />
Und der Delphi Code, so wie ich ihn mir vorstelle sieht so aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sURL:String; slPostdata:TStringList;
begin
  slPostdata := TStringList.Create;
  sURL:='http://www.snapscouts.de/misc/login';
  with
  slPostdata do
  begin
    Values['user'] := sUser;
    Values['pw'] := sPass;
    // --> Hidden Value?
    // --> Checkbox Value?
  end;
  try
    IdHTTP1.Post(sURL,slPostdata);
    memo1.Text := idhttp1.Response.RawHeaders.Text;
  except
    memo1.Text := 'Fehlgeschlagen';
  end;
  slPostdata.Free;
end;
Nun zu meinen Fragen.
Speichert Indy jetzt auch wie ein normaler Browser automatisch Cookies?
Wie übergebe die Values von "Checkbox" + "Hidden"? :gruebel:
Danke =)

Namenloser 10. Mai 2009 14:23

Re: Einloggen mit Indy 10
 
Hallo,

Zitat:

Zitat von blooddog_90
Speichert Indy jetzt auch wie ein normaler Browser automatisch Cookies?

Für Cookies gibt es den TIdCookieManager.
Zitat:

Zitat von blooddog_90
Wie übergebe die Values von "Checkbox" + "Hidden"? :gruebel:

Die werden genau so wie die anderen Forumlar-Eingaben übermittelt. Bei der Checkbox übermittelst du 1 für True und 0 für False.

blooddog_90 10. Mai 2009 14:30

Re: Einloggen mit Indy 10
 
Wenn ich das jetzt richtig verstanden habe,
müsste der unvollständige Teil dann also so aussehen:

Delphi-Quellcode:
begin
  Values['user'] := sUser;
  Values['pw'] := sPass;
  Values['xyz'] := '132m2e';
  Values['slo'] := 1;
end;
Danke! :dp:

//Edit:

:( dafür bekomm ich jetzt einen Socket Error # 11004 beim Login Versuch.

Wäre jemand so lieb und könnte der jenige bitte auf die Seite gehen "http://www.snapscouts.de/misc/login" und mir sagen warum sie einen Redict auf die Mainpage macht, obwohl das Login Formular sagt, das dort der Login wäre? Wie kann man die zum Login dazugehörige Datei ausfindig machen? Also es muss doch dort in /misc/login/ sowas wie eine index.php oder so geben. :wiejetzt:

F.W. 2. Jul 2009 21:59

Re: Einloggen mit Indy 10
 
Hallo,

ich habe auch schonmal ein Programm für SS geschrieben, welches Daten mit Login abrief. Allerdings ist das sehr lange her und damals war der Login noch etwas anders.

Nun wollte ich gerade dein Problem nachzuvollziehen, allerdings schaffe ich es nicht mich per Indy einzuloggen. (Fehler wie falscher Username oder Pw habe ich schon geprüft, ist alles ok)
- AUrl war wahlweise mal eine Profilseite oder die /misc/login/
- HandleRedirects ist True;

Mein Code:

Delphi-Quellcode:
var
 L: TStrings;
 Data: TIdMultiPartFormDataStream;
begin
 L := TStringList.Create;
 try
   Data := TIdMultiPartFormDataStream.Create;
   try
     Data.AddFormField('user', FUsername);
     Data.AddFormField('pw', FPassword.Password);
     Data.AddFormField('xyz', '132m2e');
     Data.AddFormField('slo', '0');

     L.Text := FHTTP.Post(AUrl, Data);
     L.SaveToFile('D:\test.html');

     Result := True;
   finally
     Data.Free;
   end;
 finally
   L.Free;
 end;
end;
Wenn ich die gespeicherte Datei nachher lade, wird mir die Seite angezeigt, auf der steht, dass ich doch ein registriertes Mitglied sein müsste um mich umzusehen... und am linken Rand die Loginfelder.

Konntest du dich mit deinem Code einloggen?

sx2008 3. Jul 2009 06:25

Re: Einloggen mit Indy 10
 
mal so ganz grundsätzlich:
Webseiten mit Formularen, die Java-Script enthalten können mit Indy nicht bedient werden,
weil Indy keinen Java-Script Interpreter an Bord hat.
Man kann untersuchen, was das Script genau macht und ggf. die nachfolgende Seite mit Parametern versorgen.
Häufig ist aber das Script dazu da, plumpe Versuche das Formular fernzusteuern, abzublocken.

F.W. 3. Jul 2009 20:57

Re: Einloggen mit Indy 10
 
Gibt es irgendeine Möglichkeit (z.B. andere Komponenten oder Techniken) doch irgendwie automatisiert auf den Memberbereich zuzugreifen zu können?
Von mir aus auch über den Umweg, dass man sich mit dem IExplorer einloggt und dann irgendwie das Cookie zu den Indys holt (wäre das ne Möglichkeit?)

Gibt es bei .NET eine Möglichkeit (also Delphi .NET habe ich nicht, aber Visual Studio mit seinen Sprachen wäre noch eine Ausweichmöglichkeit)

toms 4. Jul 2009 05:03

Re: Einloggen mit Indy 10
 
Zitat:

Zitat von F.W.
Gibt es irgendeine Möglichkeit (z.B. andere Komponenten oder Techniken) doch irgendwie automatisiert auf den )

z.B. mit dem Webbrowser Control (TWebbrowser etc)

F.W. 4. Jul 2009 11:05

Re: Einloggen mit Indy 10
 
Stimmt, über den kann man ja eigentlich auch die Felder ausfüllen...

Ok, werde ich die Woche mal testen, wenn ich Zeit habe. Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz