AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Post-Daten

Ein Thema von jakobwenzel · begonnen am 3. Sep 2005
Antwort Antwort
Benutzerbild von jakobwenzel
jakobwenzel

Registriert seit: 31. Aug 2005
Ort: Ingelheim am Rhein
141 Beiträge
 
FreePascal / Lazarus
 
#1

Post-Daten

  Alt 3. Sep 2005, 16:45
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)
  • Eine Edit-Komponente EMailEdit (für die E-Mail-Adresse)
  • Eine Memo-Komponente TextMemo (für den Text)
  • Noch eine Memo-Komponente ResponseMemo (für den zurückgegebenen Text)
  • Eine TidHTTP-Komponente IdHTTP
  • Und eine Button Komponente SendButton (zum Senden)

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:
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;
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)

Code:
<?php
echo 'E-Mail: '.$_POST["EMail"]; //Ausgeben der E-Mail-Adresse
echo Chr(13).Chr(10); //Zeilenumbruch
echo 'Text: '.$_POST["Text"];
?>
Bitte beachten: Php-Seiten müssen immer über einen (lokalen) Web-Server aufgerufen werden, damit sie interpretiert werden.
Jakob Wenzel
"My store now sells Ninja Weapons!"
Comicverkäufer bei den Simpsons
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 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