Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Suche Beispiel zur Zusammenarbeit von php und Applikation (https://www.delphipraxis.net/54240-suche-beispiel-zur-zusammenarbeit-von-php-und-applikation.html)

SirThornberry 30. Sep 2005 20:52

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
mit post muss es so aussehen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Response:String;
   LParams: TStringlist;
begin
  LParams := TStringlist.Create;
  LParams.Add('parameter=wert');
  LParams.Add('param2=wert2');
  Response := IdHTTP1.Pos('http://www.thru-soft.de/test.php', LParams);
  mem_feedback.Lines.Add(Response);
  LParams.Free;
end;

teebee 30. Sep 2005 20:56

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Ich sag nur: Resourcenschutzblock!

Eichhoernchen 30. Sep 2005 23:02

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
warum so kompliziert, es geht hier doch nur um bestimmte Werte.


Code:
<?php

if( (isset($_POST['param1'])) && (isset($_POST['param2'])) ) {
  echo "Alles angekommen!";
}else echo "Fehlerhaft";

?>
Und dann in Delphi so wie es zuvor für Post beschrieben war!

Delphi-Quellcode:
var
   Response:String;
   LParams: TStringlist;
begin
  LParams := TStringlist.Create;
  LParams.Add('param1=wert');
  LParams.Add('param2=wert2');
  Response := IdHTTP1.Post('http://www.mein-server.de/script.php', LParams);
  if response = 'Alles angekommen!'
    then //hier für angekommen
    else if response = 'Fehlerhaft'
            then //Variablen nicht übertragen
            else //Seite nicht erreicht
end;

torud 1. Okt 2005 08:54

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Also ich würde es ja gern so machen wie von Euch allen beschrieben, aber ich bekomme immer noch bei
Delphi-Quellcode:
 Response := IdHTTP1.Post('http://www.mein-server.de/script.php', LParams);
die Fehlermeldung:

Es gibt keine überladene Version von 'Post', die man mit diesen Argumenten aufrufen kann.

Bei Euch scheint das kein Problem zu sein. Warum nur???
Es ist dabei egal, ob ich davor die Response-Variable setze oder nicht. Liegt es an meiner Version der Indy oder was mache ich falsch?

teebee 1. Okt 2005 09:21

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Kann ich mir nicht erklären, zeig mal Deine komplette Funktion.

torud 1. Okt 2005 09:34

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe den scheinbaren Fehler gefunden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   Response:String;
   Stream:TStringStream;
   LParams: TStringlist;
begin
  Stream:=TStringStream.Create('');//Rückgabe-Stream erstellen
  LParams := TStringlist.Create;
  LParams.Add('param1=wert');
  LParams.Add('param2=wert2');
  LParams.Add('param3=wert3');
  LParams.Add('param4=wert4');
  IdHTTP1.Post('http://www.thru-soft.de/test.php', LParams, Stream);
  Response:=Stream.DataString;
  Showmessage(Response);
  mem_feedback.Lines.Add(Response);
  LParams.Free;
  Stream.Free;
end;
Und der php-Code:
<?php
foreach ($_POST as $key => $value)
{
echo("$key.": ".stripslashes($value)."\n\n");
}
?>

Ergebnis? Keins!
Ich erhalte nur einen Leerestring zurück und sonst nix.
Dabei ist es doch gemaess php-Code so, dass ich eigentlich den Parameternamen und den Wert wiederbekommen sollte. Also nun ist zwar vom Code her alles ok, aber es funzt einfach nicht.

Warum nur?

Muss ich vielleicht noch irgendwas in der idhttp-Kompo einstellen?
Demnaechst sende ich vielleicht das ganze Projekt!?

torud 1. Okt 2005 11:09

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Das verrückte ist, dass ich das Script mittels einem HTML-Formular ansprechen kann und genau das erhalte, was ich übergebe, wenn ich mir ein Echo ausgeben lasse, aber wenn ich es mit der idHttp-Komponente versuche, bekomme ich immer einen Leerstring zurück, bzw. einen Vorgabestring, den ich nun im php-Script eingebaut habe, aber keine übergebenen Parameter.

<?php
$https = $HTTP_POST_VARS;
$text="Sie haben einem Script Informationen übermittelt!\n
__________________________________________________ ______
\n";

foreach ($https as $key => $value)
{
$text = $text."".$key." : ".stripslashes($value)."\n\n";
}
echo($text);
?>

Hat als Ergebnis im Programm:
"Sie haben einem Script Informationen übermittelt!"
"_________________________________________________ _______"

Das ist alles. Der Rest fehlt leider!

Es kann eigentlich auch nicht am php-Space liegen, da es zum einen von einem HTML-Formular aus funktioniert und zum anderen ich es auch noch auf anderem Space probiert habe, mit gleichem Misserfolg.

Eichhoernchen 1. Okt 2005 12:05

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Liste der Anhänge anzeigen (Anzahl: 1)
welche Indy version nutzt du denn, denn bei mir funktioniert es!


EDIT: hab jetzt mal nen PRogramm geschrieben was auf deine Seite Postet, und es klappt, ich hab den Quellcode angehängst!

mh166 1. Okt 2005 15:09

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Um mal kurz in die Session reinzuplatzen:

GruppeCN hat auf seiner Webseite ein solches experiment durchgeführt:
:arrow: Kommunikation mit externer Software - 1. PHP Server
:arrow: Kommunikation mit externer Software - 2. Flash Client
:arrow: Kommunikation mit externer Software - 3. Delphi Client

mfg, mh166

noch_ein_hannes 1. Okt 2005 16:18

Re: Suche Beispiel zur Zusammenarbeit von php und Applikatio
 
Hi,

schau mal in der PHP-Doku unter "error_log()". Damit kannst Du prima prüfen was Dein PHP so alles macht, indem Du einfach die gewünschten Ausgaben in eine Log-Datei schreibst, bzw. sie Dir als Mail senden lässt.

Ich mache das z.B. gern so:

Delphi-Quellcode:
function trace($strMessage, $clear=false) {
   $strLogFile = '/absoluter/pfad/zu/deiner/log/datei/trace_log.txt';
   if(!empty($clear)) unlink($strLogFile);

   $strMessage = '['.(date('H:i:s')).'] '.$strMessage;
   error_log($strMessage."\n", 3, $strLogFile);
   }
Einen Log-Eintrag erstellst Du dann mit:
trace('Variable: $test='.$test);

bzw. wenn Du am Anfang des Scriptes alles zurücksetzen möchtest:
trace('Start', true);

grüsse,
Hannes


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 Uhr.
Seite 3 von 4     123 4      

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