Autor Beitrag
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 14.09.09 15:22 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
es scheint alles zu gehen. beim drücken des loginbuttons kommt keine fehlermeldung, mein Memo1 gibt mir den status 200 zurück - also ok ;)

Ne, das kann man so nicht sagen. "200 OK" heißt nur, dass die aufgerufene Seite existiert - nicht, dass ein Login funktioniert hat. Irgendwie müsste man mit IdHTTP doch auch den eigentlichen Seitentext - also den HTML-Baum - auslesen können. Ich meine, es ist der Rückgabewert der Funktion Post.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
 
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
{ ... }
procedure TForm1.loginClick(Sender: TObject);
begin
// fs := TFileStream.Create('c:\test.avi');
begin
  StringList := TStringList.Create;  //TStringList erstellen
  try
    StringList.Values['yl_name'] := Edit1.Text; //wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt
    StringList.Values['yl_pw'] := Edit2.Text;   //wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt
  finally
    StringList.Free; //Speicherfreigeben
  end;
end;

httpMain.Post('http://mein.server.com/index.php?Modul=Login', StringList);
memo1.Lines.Text := httpMain.ResponseText;
end;

Na, du gibtst die StringList ja auch wieder frei, bevor du sie verwendest - was soll denn das? Hast du den Quelltext denn überhaupt ansatzweise verstanden? Vielleicht solltest du dir erstmal die Grundlagen von Objektorientierter Programmierung anschauen - insbesondere die Kapitel über das Erzeugen und Freigeben von Objekten? :les:

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
 
40:
{ ... }
//wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt

Welche Komponente wird erstellt, welcher Code, der wo steht, wird ausgeführt und von wem? :gruebel:

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden volle Höhe Delphi-Quelltext
 
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
{ ... }
procedure TForm1.uploadClick(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  HttpServer, Response: String;
begin

  // Objekte instanzieren
  MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;

  try
      // Content-Type bestimmen
      httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType;

      // Formular-Felder setzen, die keine Dateien sein sollen
      MultiPartFormDataStream.AddFormField('EinAnderesFeld', [highligt]'dadum'[/highligt]);
      // ...

      // Datei laden
      MultiPartFormDataStream.AddFile('meine_datei''C:\test.avi''');

      // diese Methode muss _vor_ dem Senden augerufen werden
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;

      try

        // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
        Response := httpMain.Post('http://mein.server.com/index.html', MultiPartFormDataStream);

      except
        // Upload fehlgeschlagen, entsprechend reagieren
      end;
    //end;
  finally
    MultiPartFormDataStream.Free;
  end;
end;

Die hervorgehobenen Stellen solltest du dir nochmal genauer anschauen.

Aber poste uns doch bitte einfach mal die URL, über die du die Datei im Browser normalerweise hochladen würdest, dann könnten wir dir weiterhelfen. Sonst musst du die Feldnamen selbst aus dem <form> auslesen.

Grüße,
Yogu


Zuletzt bearbeitet von Yogu am Mo 14.09.09 16:40, insgesamt 1-mal bearbeitet
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mo 14.09.09 16:18 
sooo...

also den 3. quelltext den du zitiert hast habe ich von hier www.delphipraxis.net/topic98281.html , bin da auch noch nicht hinter alle zeilen gestiegen...

ich ab mir mit memo1.Lines.Text := httpMain.ResponseText den status wiedergeben lassen. mit Post hab ich nichts gefunden
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 14.09.09 16:48 
Könntest du vielleicht auch auf die anderen Aspekte eingehen, die ich angesprochen habe? Ich hab keine Lust, gegen eine Wand zu reden und doch keine Antwort zu bekommen.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
also den 3. quelltext den du zitiert hast habe ich von hier www.delphipraxis.net/topic98281.html , bin da auch noch nicht hinter alle zeilen gestiegen...

Du brauchst auch nicht komplett alles zu verstehen, es genügt, wenn du die markieren Zeilen verstehst (die jetzt auch wirklich markiert sind ;)). Und um dir helfen zu können, brauche ich

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
die URL, über die du die Datei im Browser normalerweise hochladen würdest


user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ich ab mir mit memo1.Lines.Text := httpMain.ResponseText den status wiedergeben lassen.

Das ist nur der Status, nicht aber das Ergebnis, in dem steht, ob die Anmeldung erfolgreich war. Auch im Falle eines Passworts wird "200 OK" zurück geliefert.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
mit Post hab ich nichts gefunden

Entweder hast du mich nicht richtig verstanden, oder du hast den Quelltext aus der Delphi-Praxis nicht einmal durchgelesen. Post wird bereits verwendet, und zwar genau hier:

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
 
84:
85:
{ ... }
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
Response := httpMain.Post('http://mein.server.com/index.html', MultiPartFormDataStream);

Nach diesem Schema solltest du auch den Seiteninhalt der Anmeldeseite herausfinden :idea:
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mo 14.09.09 17:30 
sorry, werd sofort alle aspekte beantworten ;) will ja schließlich hilfe bekommen :p

Zitat:
die URL, über die du die Datei im Browser normalerweise hochladen würdest
duckload.com

Zitat:
ich ab mir mit memo1.Lines.Text := httpMain.ResponseText den status wiedergeben lassen.
da habt ihr mich ja schon aufgeklärt, dass das nur den status der seite wiedergibt, nicht ob ler login funktioniert hat

Zitat:
Zitat:
mit Post hab ich nichts gefunden
Entweder hast du mich nicht richtig verstanden, oder du hast den Quelltext aus der Delphi-Praxis nicht einmal durchgelesen. Post wird bereits verwendet, und zwar genau hier:
ausblenden Delphi-Quelltext
1:
2:
3:
84:
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
Response := httpMain.Post('http://mein.server.com/index.html', MultiPartFormDataStream);

doch hab ich verstanden. aber du meintest es könnte eine rückgabemöglichkeit über Post geben. und daraufhin hab ich geschrieben (oder versucht rüber zu bringen), da ich zu Post und Rückgabewert nichts gefunden habe

so, nun zum highliten:

1. 'EinAnderesFeld': da steht ja als comment // Formular-Felder setzen, die keine Dateien sein sollen
Zitat:
ich soll ein formularfeld setzen, welches keine datei sein soll ? seit wann sind denn felder dateien ? oder raff ich hier was überhaupt nicht ? oder nennt mir mal ein feld, welches eine datei sein soll :gruebel:


2. 'meine_datei': ich weiß nicht genau, wohin du mich da lenken willst, ich sehe da nichts falsches oder denke ich in die verkehrte richtung

3. 'http://mein.server.com/index.html': da hätte wohl das hier stehen müssen 'http://duckload.com/index.php?Modul=Login'


wenn du die hoffnung noch nicht aufgegeben hast, hoffe ich auf antwort :oops: :oops:
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 14.09.09 17:50 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
die URL, über die du die Datei im Browser normalerweise hochladen würdest
duckload.com

Ach so, das geht ja sogar ohne Login :D - Würde dir das auch reichen?

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
ich ab mir mit memo1.Lines.Text := httpMain.ResponseText den status wiedergeben lassen.
da habt ihr mich ja schon aufgeklärt, dass das nur den status der seite wiedergibt, nicht ob ler login funktioniert hat

Zitat:
Zitat:
mit Post hab ich nichts gefunden
Entweder hast du mich nicht richtig verstanden, oder du hast den Quelltext aus der Delphi-Praxis nicht einmal durchgelesen. Post wird bereits verwendet, und zwar genau hier:
ausblenden Delphi-Quelltext
1:
2:
3:
84:
// Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
Response := httpMain.Post('http://mein.server.com/index.html', MultiPartFormDataStream);

doch hab ich verstanden. aber du meintest es könnte eine rückgabemöglichkeit über Post geben. und daraufhin hab ich geschrieben (oder versucht rüber zu bringen), da ich zu Post und Rückgabewert nichts gefunden habe

Was willst du denn wo finden? Post ist doch eine Funktion, oder irre ich mich da? Dann hätte es der Verfasser des Quelltextes der Delphi-Praxis aber auch getan, denn dort wird der Rückgabewert von Post verwendet. Und die betroffene Stelle habe ich zitiert (und du eben wieder - und ich jetzt auch nochmal ;)).

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
so, nun zum highliten:

1. 'EinAnderesFeld': da steht ja als comment // Formular-Felder setzen, die keine Dateien sein sollen
Zitat:
ich soll ein formularfeld setzen, welches keine datei sein soll ? seit wann sind denn felder dateien ? oder raff ich hier was überhaupt nicht ? oder nennt mir mal ein feld, welches eine datei sein soll :gruebel:

Die Zeile 72 ('EinAnderesFeld') kannst du tatsächlich weglassen, hab ich gerade getestet.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
2. 'meine_datei': ich weiß nicht genau, wohin du mich da lenken willst, ich sehe da nichts falsches oder denke ich in die verkehrte richtung

'meine_datei' (Zeile 76) ersetzt du am besten durch 'file[0]', probier's aber auch mal mit 'file'. So heißt nämlich das Eingabefeld im Formular, das vom Typ "file" ist.

user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
3. 'http://mein.server.com/index.html': da hätte wohl das hier stehen müssen 'http://duckload.com/index.php?Modul=Login'

Rischtisch.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 14.09.09 18:38 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:

Was willst du denn wo finden? Post ist doch eine Funktion, oder irre ich mich da? Dann hätte es der Verfasser des Quelltextes der Delphi-Praxis aber auch getan, denn dort wird der Rückgabewert von Post verwendet. Und die betroffene Stelle habe ich zitiert (und du eben wieder - und ich jetzt auch nochmal ;)).


Ja, post hat einen Rückgabewert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  s: String;#
begin
  ...
  s := IdHTTP.Post('www.google.de', ...);
end;
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mo 14.09.09 22:33 
die anmeldung müsste schon bleiben, auch wenn es theoretisch ohne gehen würde ;)

so, also soweit sieht es nett aus. wenn ich versuche meine test.avi zu uppen, meldet firewall zugriff auf duckload.com...
aber die datei wird nicht hochgeladen. auf Form1 kann ich zwar für ne minute nich zugreifen (wäre auch die zeit, die der upload dauern würde), aber in der minute geschieht kein uplaod.
ich kann jetzt auch gar nicht genau sagen wo es hängt

der Rückgabewert von idhttp.post funzt zwar, zeigt mir aber immer den quelltext an, egal ob eingeloggt oder nicht bzw egal, ob ich mein.server.com oder mein.server.com/index.html oder mein.server.com/index.php?Modul=Login...

wie kann ich schauen woran es hängt oder wo es nicht weitergeht ?

EDIT: mit code lässt sich der fehler wohl einfacher finden :D
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
unit http.form1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  StdCtrls, FileCtrl, ComCtrls, MsMultiPartFormData;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    login: TButton;
    httpMain: TIdHTTP;
    Edit2: TEdit;
    Memo1: TMemo;
    upload: TButton;
    procedure loginClick(Sender: TObject);
    procedure uploadClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  StringList: TStringList;
  s: String;
implementation

{$R *.dfm}

procedure TForm1.loginClick(Sender: TObject);

begin
  StringList := TStringList.Create;  //TStringList erstellen
  try
    StringList.Values['yl_name'] := Edit1.Text; //wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt
    StringList.Values['yl_pw'] := Edit2.Text;   //wenn die Komponente erstellt wurde wird der Code, der hier steht, ausgeführt
  finally
    // StringList.Free; //Speicherfreigeben}
end;
httpMain.Post('http://duckload.com/index.php?Modul=Login', StringList);
memo1.Lines.Text := httpMain.Post('http://duckload.com/member/', StringList);
end;




procedure TForm1.uploadClick(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  HttpServer, Response: String;
begin

  // Objekte instanzieren
  MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;

  try
      // Content-Type bestimmen
      httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType;

      // Formular-Felder setzen, die keine Dateien sein sollen
      // MultiPartFormDataStream.AddFormField('EinAnderesFeld', 'dadum');
      // ...

      // Datei laden
      MultiPartFormDataStream.AddFile('file[0]''c:\test.avi''');

      // diese Methode muss _vor_ dem Senden augerufen werden
      MultiPartFormDataStream.PrepareStreamForDispatch;
      MultiPartFormDataStream.Position := 0;

      try

        // Anfrage abschicken, hier halt z.B. "deine" PHP-Datei hinsetzen
        Response := httpMain.Post('http://duckload.com/index.php?Modul=Login', MultiPartFormDataStream);

      except
        // Upload fehlgeschlagen, entsprechend reagieren
      end;

  finally
    MultiPartFormDataStream.Free;
  end;

end;
end.


---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

vllt der falsche weg, aber hab mir mal ne statusbar eingebaut um zu sehen, ob die datei überhaupt gesendet wird. zeigt mir KB an und den fortschrittsbalken. es wird definitiv was geupped, aber ich befürchte, dass es nicht auf meinen account geht sondern in die pampa :(
also müsste ja irgendwas beim login doch nicht funktionieren
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 15.09.09 11:19 
Wenn du die Datei an die Loginseite schickst gehts natürlich nicht...
ausblenden Delphi-Quelltext
1:
Response := httpMain.Post('http://duckload.com/index.php?Modul=Login', MultiPartFormDataStream);					


Außerdem brauchst du noch einen TIdCookieManager welchen du mit TIdHTTp verbinden musst (Eigenschaft CookieManager) damit der Login auch erhalten bleibt.

Aber wenn ich mir deinen Code so anschaue, insbesondere den oberen Teil, habe ich das Gefühl das du überhaupt nix verstanden hast. Z. B. hast du StringList.free auskommentiert was ein Speicherleck verursacht. Hättest die Anweisungen bei denen du die StringList brauchst doch einfach nur in den try-finally-Block schieben müsen. Guck mal hier: christian-stelzmann....s.php?name=crashkurs

Und natürlich enthält der Rückgabewert von .Post den Quelltext der Seite. Den musst du eben durchsuchen (parsen) z. B. nach einem bestimmten Satz (Login war erfolgreich), je nachdem was duckload dir nachdem Login eben anzeigt. Stichworte: Copy, Pos, PosEx, Delete
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 15.09.09 11:47 
is das nicht die anmeldung ? httpMain.Post('http://duckload.com/index.php?Modul=Login', StringList);
und das nicht der upload ? Response := httpMain.Post('http://duckload.com/index.php?Modul=Login', MultiPartFormDataStream);
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 15.09.09 12:05 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
is das nicht die anmeldung ? httpMain.Post('http://duckload.com/index.php?Modul=Login', StringList);
und das nicht der upload ? Response := httpMain.Post('http://duckload.com/index.php?Modul=Login', MultiPartFormDataStream);


Schau mal genau hin, du schickst sowohl den Login als auch die Datei an ein und die selbe Adresse.
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 15.09.09 12:40 
die url zum upload
ausblenden Delphi-Quelltext
1:
und das nicht der upload ? Response := httpMain.Post('http://duckload.com/index.php?Modul=Login', MultiPartFormDataStream);					
war einfach die letzte adresse die ich versucht habe :/ ich hatte vorher auch andere urls getestet aber die gingen ebenfalls nicht
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 15.09.09 13:50 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
die url zum upload
ausblenden Delphi-Quelltext
1:
und das nicht der upload ? Response := httpMain.Post('http://duckload.com/index.php?Modul=Login', MultiPartFormDataStream);					
war einfach die letzte adresse die ich versucht habe :/ ich hatte vorher auch andere urls getestet aber die gingen ebenfalls nicht


Ganz einfach. Wenn du auf duckload.com/index.php?Modul=Login gehst und die einloggst, auf welche Seite wirst du dann weitergeleitet? Und wenn die Adresse dann nicht geht, würd ich sagen, hast du noch einen Fehler in deinen Code. Schon debuggt?
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 15.09.09 14:11 
weitergeleitet werde ich auf duckload.com/index.php?Modul=Hauptseite, aber ich hab das vorher schon mit modul=hauptseite probiert und ging nicht... ok, dann liegt der fehler woanders, sicher beim anmelden/einloggen
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 15.09.09 14:14 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
weitergeleitet werde ich auf duckload.com/index.php?Modul=Hauptseite, aber ich hab das vorher schon mit modul=hauptseite probiert und ging nicht... ok, dann liegt der fehler woanders, sicher beim anmelden/einloggen


Hast du auch den TIdCookieManager verwendet wie ich oben beschrieben habe?
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 15.09.09 14:28 
nein, cookie hab ich noch nicht eingebaut. ich weiß auch noch nicht wie des geht ;) und ich hab es erstmal ohne probiert - hätte ja klappen können ;)
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 15.09.09 14:45 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
nein, cookie hab ich noch nicht eingebaut. ich weiß auch noch nicht wie des geht ;) und ich hab es erstmal ohne probiert - hätte ja klappen können ;)


Ich habs doch oben schon beschrieben wies geht :roll: : TIdCookieManager auf die Form ziehen, deine IdHTTP-Komponente anklicken und der Eigenschaft CookieManager den TIdCookieManager zuweisen.
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 15.09.09 15:35 
oki, cookie hab ich gemacht. aber wie zuvor keine änderung :?
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 15.09.09 15:58 
Jetzt machen wir deinen Code mal etwas schöner und besser benutzbar:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function Login(AUserName, APassword, AURL: String):Boolean;
var
  PostData: TStrings;
  Source: String;
begin
  Result := False;

  PostData := TStringList.Create;
  try
    //Felder hinzufügen
    PostData.Add('yl_name=' + AUserName); 
    PostData.Add('yl_pw=' + APassword);

    //Absenden
    Source := IdHTTP1.Post(AURL, PostData);

    //Überprüfen ob der Login erfolgreich war
    Result := pos('Login war erfolgreich', Source) > 0;  //Den String musst du natürlich an die Ergebnisseite anpassen, wenn das wirklich wieder die Startseite ist, steht da sicherlich was wie "Sie sind eingeloggt" oder "Loggout DeinBenutzername", anstatt den Code der Seite zu überprüfen kannst du natürlich auch den CookieManager auswerten
  finally
    PostData.Free;  
  end;
end;


Füg das mal im Code-Editor ein und ruf es mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if Login('benutzername''passwort''http://duckload.com/index.php?Modul=Login'then
  ShowMessage('Login war erfolgreich')
else
  ShowMessage('Login fehlgeschlagen');

z. B. per ButtonClick auf. Zuvor löscht du aber bitte die IdHTTP-Komponente von der Form und platzierst eine neue und machst keine Verändernung an den Eigenschaften (außer den Cookiemanager eintragen, der ist wichtig!!!)!
noo.bee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Di 15.09.09 16:38 
soll ich komplett erneuern ? also neues form, neuer button, neue idhttp und neuer cookie und dann dein code einfügen ?
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 15.09.09 16:41 
user profile iconnoo.bee hat folgendes geschrieben Zum zitierten Posting springen:
der Rückgabewert von idhttp.post funzt zwar, zeigt mir aber immer den quelltext an, egal ob eingeloggt oder nicht bzw egal, ob ich mein.server.com oder mein.server.com/index.html oder mein.server.com/index.php?Modul=Login...

Ist ja schön, dass er dir einen Quelltext anzeigt, ist ja noch schöner, dass er das immer macht und ich find's ja wirklich klasse, dass das immmer so ist, auch wenn man nicht angemeldet wurde - die Frage ist doch: Was wird zurückggegeben? Dort müsste schwarz auf weiß stehen, ob der Login geklappt hat oder nicht. Ganz einfach.