![]() |
Post-Daten
Post-Daten werden normalerweise dafür genutzt, Daten aus HTML-Formularen an bearbeitende PHP- oder CGI-Sckripte zu senden. Mit den Indy-Komponenten lassen sich solche Formulare imitieren. Dadurch lässt sich ein solches Formular direkt in die Anwendung integrieren. Aber auch zum Datenaustausch mit einem solchen Skript kann die Funktion genutzt werden.
Die benötigte Funktionalität wird von der Komponente TidHTTP zur Verfügung gestellt. Folgende Komponenten werden auf dem Test-Formular benötigt: (Das Test-Formular soll ein einfaches Konakt-Formular darstellen)
Außer den Namen können alle Standardeigenschaften der Elemente so belassen werdne In die Ereignisbehandlung OnClick des Buttons muss jetzt geschrieben werden:
Delphi-Quellcode:
Zum Abschluss noch ein Beispiel für eine bearbeitende PHP-Seite: (die Anfrage würde normalerweise noch irgendwo abgespeichert werden, darauf habe ich hier verzichtet, die Post-Daten werden lediglich formatiert zurückgegeben)
procedure TForm1.Button1Click(Sender: TObject);
var PostStrings: TStringList; //Zusammengesetze Post-Daten ResponseStream:TStringStream;//Ausgabe der Aufgerufenen Seite ausgabe:String; //Ausgabe der aufgerufenen Seite als String zeile:String; //Zum zeilenweisen Ausgeben der Rückgabe der Aufgerufenen Seite benutzte Zwischenvariable i:Integer; //Zähler für die For-Schleife begin Stream:=TStringStream.Create('');//Rückgabe-Stream erstellen Strings := TStringList.Create; //Post-Daten-StringList erstellen try Strings.Add('EMail='+EMailEdit.Text); //Post-Daten in die StringList eintragen Strings.Add('Text='+TextMemo.Lines.Text); try idHTTP.Post('http://deineSeite.de/DeineDatei.php', Strings,stream);//Datei abrufen ausgabe:=Stream.DataString; //Ausbage-Sring die zurückgegebenen Daten zuweisen zeile:=''; //Zwischenvariable leeren for i:=1 to Length(ausgabe) do begin //For-Schleife zum formatieren der Ausgabe (Zeilenumbrüche korrekt darstellen) if (ausgabe[i]=#13) and (ausgabe[i+1]=#10) then begin //Bei Zeilenumbruch ResponseMemo.Lines.Add(zeile); zeile:=''; end else if s[i]<>#10 Then zeile:=zeile+ausgabe[i]; end; ResponseMemo.Lines.Add(steil); except //Fehlerbehandlung on E: Exception do showmessage('Error encountered during POST: ' + E.Message); end; finally Strings.Free; Stream.Free; end; end;
Code:
Bitte beachten: Php-Seiten müssen immer über einen (lokalen) Web-Server aufgerufen werden, damit sie interpretiert werden.
<?php
echo 'E-Mail: '.$_POST["EMail"]; //Ausgeben der E-Mail-Adresse echo Chr(13).Chr(10); //Zeilenumbruch echo 'Text: '.$_POST["Text"]; ?> |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz