Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi PHP Formular ausfüllen (https://www.delphipraxis.net/35930-php-formular-ausfuellen.html)

marciboy 13. Dez 2004 21:04


PHP Formular ausfüllen
 
Hallo

bin ein totaler Anfänger was Delphi angeht und suche schon seit Tagen nach einem für mich verständlichem Tutorial.

Ich habe ein in PHP geschriebenes Formular, was ich gern über Delphi ausfüllen möchte.
Außerdem möchte ich mich mit verschiedenen Usernamen und Passwörtern anmelden können.

Ich hoffe Ihr könnt mir helfen

Gruß
Marc :)

alcaeus 13. Dez 2004 21:07

Re: PHP Formular ausfüllen
 
Hallo marciboy,

erstmal herzlich willkommen hier :hi: :dp:
Um ein Formular auszufüllen kannst du z.B. die Post-Funktion von TIdHTTP verwenden (die HTTP-Komponente in der Indy-Komponentensammlung). Damit ist es eigentlich ein Kinderspiel das Formular auszufüllen. Das Ganze geschieht auch im Hintergrund, d.h. du kannst deine eigene Oberfläche anbieten. Such mal hier im Forum ein bisschen, es müsste einige Beispiele zum Thema geben.

Greetz
alcaeus

marciboy 13. Dez 2004 21:21

Re: PHP Formular ausfüllen
 
Hallo alcaeus,

erstmal danke für deine schnelle antwort.

Es soll ein Tool für mein Auktionshaus werden und bin für jeden kleinen Tip dankbar.

Gruß
Marc :coder:

alcaeus 13. Dez 2004 21:31

Re: PHP Formular ausfüllen
 
Hallo marciboy,

also, der folgende Code zeigt dir, wie du ein Formular mit TIdHTTP absenden kannst.
Die Komponente findest du auf der Palette "Indy Clients".

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Add('mode=login');
    SL.Add('user='+Edit1.Text);
    SL.Add('pass='+Edit2.Text);
    IdHTTP1.Post('http://www.deineseite.de/login.php', SL);
  finally
    SL.Free;
  end;
end;
Zur Erklärung. Zuerst wird eine Stringliste erstellt, welche alle Parameter enthält. Die Parameter werden wie bei PHP mit name=wert eingetragen, und zwar als einzelne Zeile. Die Indy-Komponente kümmert sich dann darum:
Meine OH schreibt:
When ASource is a TStrings instance, Post will replace all occurrences of the End-Of-Line (EOL) character in ASource with the value '&' prior to transfer to the HTTP server.

Anschließend wird das Formular abgeschickt und du bist angemeldet. Natürlich wird das Ganze etwas komplexer, aber das Grundprinzip sollte verständlich sein.

Greetz
alcaeus

marciboy 13. Dez 2004 21:46

Re: PHP Formular ausfüllen
 
Hallo alcaeus

das heißt ich kopiere deinen code in den Button?
Und erstelle dann die 2 edits und die indy.

Ist das so richtig??

Gruß:roteyes:
Marc

alcaeus 14. Dez 2004 12:53

Re: PHP Formular ausfüllen
 
Zitat:

Zitat von marciboy
das heißt ich kopiere deinen code in den Button?
Und erstelle dann die 2 edits und die indy.

Ja, so sollte es funktionieren. Beachte aber dass die Seite und die Parameter rein erfunden sind, du musst es evtl. mit einer deiner PHP-Seiten probieren.

Greetz
alcaeus

marciboy 14. Dez 2004 19:41

Re: PHP Formular ausfüllen
 
Hallo alcaeus

danke für deine hilfe. Wie weiß ich denn jetzt wo ich eingeloggt bin oder nicht?

gruß
MARC

endeffects 17. Dez 2004 12:43

Re: PHP Formular ausfüllen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SL: TStringList; Source: String;
begin
  SL := TStringList.Create;
  try
    SL.Add('mode=login');
    SL.Add('user='+Edit1.Text);
    SL.Add('pass='+Edit2.Text);
    Source:= IdHTTP1.Post('http://www.deineseite.de/login.php', SL);
  finally
    SL.Free;
  end;
  Memo.Lines.Add(Source);
end;
Da gibts verschiedenen Möglichkeiten, im obigen Beispiel
müßtest Du noch ein Memo Feld auf Deine Form packen und
diese dann unter Name von Memo1 auf Memo umbenennen.
Wenn der Request an den Webserver gesendet wird wird
die Antwort, der HTML Quelltext, dann im Memo ausgegeben.
Um zu kontrollieren das nun alles geklappt hat müßtest
Du diesen Quelltext dann nach segnifikanten Schlüsselwörtern
durchsuchen z.B. Sie sind jetzt angemeldet.
Die Funktion pos wird Dir da treue Dienste leisten.

Empfehlen würde ich Dir aber auf jeden Fall einen PacketSniffer
zu installieren damit Du alle Deine Schritte nachvollziehn kannst.
Wie arbeitet Dein Browser, was macht mein Programm.
Nahelegen würde ich Dir hier etherdetect (etherdetect.com),
etheral oder aber einen kompfortablen Proxy der Dir auch
SSL Packet im Klartext darstellt (Google > Charles+Proxy).
Wobei speziell der Proxy dann bei den Indy Proxy Einstellungen
angegeben werden muss. ProxyIP 127.0.0.1 und ProxyPort 8080
glaube ich waren das. Die Einstellungen findest Du auch
wenn Du Charles startest und dieser dann die Einstellungen
für den IE temporär umändert (Extras >Internetoptionen
> Verbindungen > Einstellungen)
Viel Spass und Freude wünsch ich Dir :)

marciboy 17. Dez 2004 14:37

Re: PHP Formular ausfüllen
 
Hallo

bei mir kommt im Memo folgendes raus:

SymRealOnLoad();
window.open = SymRealWinOpen;
SymRealOnUnload = window.onunload;
window.onunload = SymOnUnload;
}

SymRealOnLoad = window.onload;
window.onload = SymOnLoad;

//-->
</script>


Gruß
Marc

endeffects 17. Dez 2004 15:02

Re: PHP Formular ausfüllen
 
wie gesagt, installier dir einen packetsniffer,
dann siehst du wann wo was ankommt
kontrollier das mit deinem browser und deinem tool
und schon weißte wo es hängt


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.
Seite 1 von 2  1 2      

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