Autor |
Beitrag |
P@u1
      
Beiträge: 117
|
Verfasst: Mo 03.05.10 12:06
Hallo DF,
ich möchte in einem Programm einen direkten Zugriff auf ein PHP-Skript, dass etwas berechnet haben.
Wie gehe ich da am besten vor?
Kann ich irgendwie direkt eine php Funktion einer Webseite von Delphi aus aufrufen und das Ergebnis dann in Delphi empfangen?
Oder gibt es die Möglichkeit das mit dem TWebBrowser zu realisieren?
Man müsste dafür auf die richtige Seite gehen, im Browser das richtige Edit Feld auswählen, dann da was eingeben und auf berechnen drücken und dann das ergebnis empfangen.
Nur soll das alles passieren, ohne, dass man davon was mitbekommt, so dass man in delphi etwas in ein Edit Feld eingibt und auf ein Button drückt, dann wird das was man eingegeben hat an die php Funktion gesendet und das Ergebnis auf z.B. nem Label angezeigt.
Hoffe das ist möglich und, dass ihr mir helfen könnt
P.S.: ich hab gesehn, dass es einen Thread mit ähnlichem namen gibt, aber der ist seeeeeeeehr langwierig und scheint zu keinem besonders guten Ergebnis gekommen zu sein, deswegen mach ich hier nochmal nen neuen auf.
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Mo 03.05.10 12:15
Es gibt da sehr viele Themen im Forum dazu, such mal nach "Post" und "Get".
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mo 03.05.10 12:28
P@u1 hat folgendes geschrieben : |
ich möchte in einem Programm einen direkten Zugriff auf ein PHP-Skript, dass etwas berechnet haben.
....
Kann ich irgendwie direkt eine php Funktion einer Webseite von Delphi aus aufrufen und das Ergebnis dann in Delphi empfangen? |
Nein kannst Du nicht. PHP ist immer Serverseitig!
P@u1 hat folgendes geschrieben : | Oder gibt es die Möglichkeit das mit dem TWebBrowser zu realisieren?
Man müsste dafür auf die richtige Seite gehen, im Browser das richtige Edit Feld auswählen, dann da was eingeben und auf berechnen drücken und dann das ergebnis empfangen. |
ja geht, Get und Post.
P@u1 hat folgendes geschrieben : | Nur soll das alles passieren, ohne, dass man davon was mitbekommt, so dass man in delphi etwas in ein Edit Feld eingibt und auf ein Button drückt, dann wird das was man eingegeben hat an die php Funktion gesendet und das Ergebnis auf z.B. nem Label angezeigt. |
auch hier über Get und Post, aber nie direkt, wie oben schon erwähnt!
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 03.05.10 12:35
Moin!
P@u1 hat folgendes geschrieben : | ich hab gesehn, dass es einen Thread mit ähnlichem namen gibt, aber der ist seeeeeeeehr langwierig und scheint zu keinem besonders guten Ergebnis gekommen zu sein, deswegen mach ich hier nochmal nen neuen auf. |
Der Thread ist lang, ja, aber deshalb noch lange nicht unbrauchbar.  Aber gut, ein Tutorial ist es auch nicht gerade...
Also hier ein getesteter Quickstart (Indy9):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| type TForm1 = class(TForm) Button1: TButton; IdHTTP1: TIdHTTP; meSoftware: TMemo; edHostname: TEdit; edState: TEdit; mePostLog: TMemo; edPostUrl: TEdit;
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; Data: TIdMultiPartFormDataStream; begin Data := TIdMultiPartFormDataStream.Create; try Data.AddFormField('hostname', edHostname.Text); Data.AddFormField('state', edState.Text); for i := 0 to meSoftware.Lines.Count-1 do Data.AddFormField('software[]', meSoftware.Lines.Strings[i]); try mePostLog.Lines.Text := IdHTTP1.Post(edPostUrl.Text, Data); except mePostLog.Lines.Text := 'Exception: '+Exception(ExceptObject).Message; end; finally Data.Free; end; end; | Und auf dem Server:
Quelltext 1: 2: 3:
| <?php print_r($_POST); ?> | Das muss reichen, um damit starten zu können. Wenn davon irgendwas unklar ist: Grundlagen selbst erarbeiten!
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Mo 03.05.10 15:26
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
P@u1 
      
Beiträge: 117
|
Verfasst: Mo 03.05.10 20:17
so, vielen dank für eure Hilfe!
Ich hab das eingeben der Daten jetzt hingekriegt (also kein direkter zugriff auf die funktion sondern die daten werden im twebbrowser eingegeben).
Wie kann ich jetzt das Ergebnis (wird in Textform dargestellt) rauskopieren und z.B. auf nem Label anzeigen lassen?
Es ist ein dynamisch erzeugter text, also komm ich nicht über den quelltext weiter soweit ich weiß.
Ich habs jetzt länger versucht und auch die hilfe hat nichts gebracht, also wär gut wenn ihr mir helfen könnt.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mo 03.05.10 22:03
Hi, ich schätze das Du in diesem Fall um das Parsen der Seite nicht drum rumkommst!
Was ist das eigentlich für eine Seite?
Was für ein Ergebnis erhälts Du?
Wenn Du schon programmierst, warum schreibst Du die Funktion nicht selbst, oder ist es etwas kompliziertes a'la Suchmaschine usw.? Währe mal ne Info wert, um was es überhaupt geht!
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
P@u1 
      
Beiträge: 117
|
Verfasst: Mo 03.05.10 22:46
es geht um eine seite, die für einen komplizierte berechnungen macht.
Selbst schreiben ist mir zu viel aufwand.
Das Ergebnis wird als text ausgegeben.
Kann ich vll nen tastendruck von strg+a und strg+c+ simulieren und dann ist das ergebnis im zwischenspeicher (mit anderen sachen zusammen) und dann filter ich das ergebnis da raus?
Wenn ja, wie funktioniert das?
Oder ist dieses Parsen (was mir nicht viel sagt xD) besser?
|
|
r2d2-aeg
      
Beiträge: 28
Win XP, Win Vista, Win 7
|
Verfasst: So 04.07.10 11:54
Binde einfach in uses clipbrd ein und zum kopieren dann:
clipboard.astext:= ... ;
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: So 04.07.10 17:42
WTF?
Hab ich das richtig verstanden? Du ignorierst die (fast) fertige Lösung von Narses, gehst stattdessen einen total umständlichen und fehleranfälligen Weg über TWebbrowser, in dem du Daten in editFelder einträgst, um die an den Server zu schicken, um dann am Ende ein Copy über dem ANGEZEIGTEM Text zu simulieren, aus dem du dann das Ergebnis ausliest?
FAIL!
Und "du kommst über den Quelltext nicht weiter"...Dann kannste es gleich lassen. Wenns damit nicht geht, geht es gar nicht.
Parsen heißt in deinem Fall geschicktes Einsetzen der Pos() und Copy() Funktionen auf einen String.
Am besten guckst du dir erstmal auf einem Ausdruck an, was du eigendlich hast, was du bekommst und was du willst...
|
|
|