Anfrage an externes PHP Script



  • Hallo,

    ich progge gerade ein bisschen in PHP und stehe jetzt vor folgendem Problem:
    Ich möchte aus meinem PHP Script heraus ein anderes PHP Script, quasi wie eine Funktion aufrufen (GET Variablen dienen als Parameter) und die Rückgabe in einer Variable speichern. Gibt es dafür eine Funktion???

    Gruß,
    b00tl0ad3r



  • Probier es mal mit fopen()



  • Für die Kommunikation mit externen PHP Applikationen kannst du etwas professioneller Vorgehen, in dem du SOAP oder XMP-RPC benutzt.

    Für einfachere Anwendungen ohne SOAP oder XMP-RPC:
    Ansonsten kannst du neben fopen() auch file_get_contents() benutzen.



  • fopen() oder file_get_contents()?

    Ich denke, ihr habt den Threadstarter beide falsch verstanden. Wenn er ein PHP-Skript (eine einzelne Datei) wie eine Funktion aufrufen will und anschließend die return-Value des Skriptes verwerten will, dann gibt's nur eine Sache: include(). fopen() bzw. file_get_contents() würden den Inhalt der Datei ausgeben (ihren Quellcode), ich denke nicht, dass das der gewünschte Effekt wäre ...

    Ansonsten ist das Vorgehen meiner Meinung nach nicht möglich.



  • Nein, mit file_get_contents kann er es wie eine Funktion verwenden (Parameter kann er über GET oder auch POST übergeben). Sagen zum Beispiel er ruft diese folgende Datei mit file_get_contents auf:

    application.php

    <?
    $name = "Muster Müller";
    echo strrev($name);
    ?>
    

    Diese Datei "application.php" kann er nun von einer externen Domain aufrufen:

    <?
    $return = file_get_contents('http://www.domain.de/application.php');
    ?>
    

    Ein inlcude() auf eine externe Datei (über http) gibt auch die Ausgabe der PHP Anwendung aus.

    Es könnte nur über ftp gehen:

    <?
    $return = file_get_contents('ftp://user:pass@www.domain.de/application.php');
    ?>
    


  • Die Verwendung einer externen URL habe ich bewusst nicht berücksichtigt, weil es eine kritische Sicherheitslücke ist, und dieses "Feature" daher bei vielen ISPs (zu Recht) deaktiviert ist.

    Du solltest mit file_get_contents() wirklich nur auf lokale Dateien verweisen, wo die Funktion eben das macht, was ihr Name behauptet (den Inhalt einer Datei ermitteln). Alles andere wäre streng von der Konfiguration der PHP-Installation abhängig und somit schlechter Code 😉

    Was du da beschreibst ist übrigens auch kein Verhalten "wie eine Funktion", da eine solche sich immer durch ihre return-Value rückmeldet. Diese ist ausschließlich bei include() (bzw. include_once()) verfügbar ...



  • Es ist im "allgemeinen" eine Funktion, da man Parameter übergibt und auch auf eine Art zurück bekommt. Include bringt ihm aber bei externen Dateien über http auch nichts.

    Aber du hast Recht, dass allow_url_open oft auf Off steht, was natürlich sicherheitstechnisch gut ist.

    Ich würde das Ganze sowieso über SOAP oder XML-RPC lösen (Stwichwort: WebService).


Anmelden zum Antworten