Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi POST an PHP geht nicht Wieso (https://www.delphipraxis.net/138494-post-php-geht-nicht-wieso.html)

p.sprick 11. Aug 2009 12:56


POST an PHP geht nicht Wieso
 
Hallo Leute,
ich moechte per idHTTP.Post daten an ein PHP übergeben.
Es kommt aber nur

Test
Undefined index: email in test1.phpon line 3

Wen ich mit ISSET($_POST['email') arbeite kommt nur

Test

Aber wieso. Wo liegt der Fehler????

Gruss Paul

Hier der Quelltext:

Delphi-Quellcode:
  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
  ResponseStream:=TStringStream.Create('');//Rückgabe-Stream erstellen
  PostStrings := TStringList.Create;  //Post-Daten-StringList erstellen
  try
    PostStrings.Add('email=test@test.de');   //Post-Daten in die StringList eintragen
    try
      idHTTP.Post('http://ps-edv-online.de/test1.php', PostStrings,Responsestream);//Datei abrufen
      ausgabe:=ResponseStream.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 ausgabe[i]<>#10 Then zeile:=zeile+ausgabe[i];
      end;
      ResponseMemo.Lines.Add(zeile);
    except //Fehlerbehandlung
     on E: Exception do
       showmessage('Error encountered during POST: ' + E.Message);
    end;
  finally
    PostStrings.Free;
    ResponseStream.Free;
  end;
end;
test1.php

Delphi-Quellcode:
<?php
echo "test";
echo $_POST['email'];
?>

p.sprick 11. Aug 2009 15:17

Re: POST an PHP geht nicht Wieso
 
Hallo Leute,
ich habe mal ein bisschen was versucht.
Wenn ich
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
Setzte kann ich schon mal die Erste Variabel uebergeben.

Jetzt habe ich mit 2 Variabalen getestet also:

PostStrings.Add('email=test@test.de'); //Post-Daten in die StringList eintragen
PostStrings.Add('Name=testname');
PHP ANgepasst

Delphi-Quellcode:
<?php
echo "test";
echo $_POST['email'];
echo $_POST['Name'];
?>
Geht nicht wieder der Index Fehler:
Also habe ich alles in einem String gepackt

PostStrings.Add('email=test@test.de&Name=testname' );

Es geht! Das macht doch keinen Sinn wenn ich viele Parameter übergebe ist der String doch bals voll.
Wer weiss Rat?
Gruss Paul

Assertor 11. Aug 2009 15:42

Re: POST an PHP geht nicht Wieso
 
Hallo,

gut, will ich mal etwas unter die Arme greifen:

Zitat:

Zitat von p.sprick
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';

Schonmal absolut richtig!

Zitat:

Zitat von p.sprick
PostStrings.Add('email=test@test.de'); //Post-Daten in die StringList eintragen
PostStrings.Add('Name=testname');

Auch richtig.

Wenn ich das mache, und den Responsestream auswerte (.DataString), erhalte ich als Antwort von Deinem Server "test test@test.de testname" (ohne Leerzeichen).

Ich tippe daher darauf, daß Du eine ältere Indy Version einsetzt, wo noch irgendein Bug drin war. Aktualisiere doch mal die Indy Installation (hier im Forum suchen, gibt viele Infos darüber). Stichwort: "Fulgan Mirror" für die aktuelle Version.

Gruß Assertor

jfheins 11. Aug 2009 17:17

Re: POST an PHP geht nicht Wieso
 
Du kannst in die PHP-Seite auch mal ein
Code:
print_r($_POST); // oder print_r($_REQUEST);
einbauen, dann siehst du genau, was wie angekommen ist ;)

p.sprick 12. Aug 2009 12:37

Re: POST an PHP geht nicht Wieso
 
Hallo Leute,
es lag an der Delphi Indy Komponente bei Delphi 6.
Ich habe jetzt die Indy 9er version installiert und Siehe da es läuft!
Ich kann jetzt:

add('email=mail@mail.de');
add('name=willi');

übergeben und es kommt beim php an!

Vielen Dank an alle!
Paul


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:47 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