include über http findet functionen nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • include über http findet functionen nicht

    Hallo zusammen,

    im Prinzip möchte ich es jemanden ermöglichen, von einem Server, der nicht der meinige ist, ein PHP-Skript auszuführen. Dazu möge es mittels include (include 'http://www.testdomain.de/script.php') sich das entsprechende Skript laden.

    Das Einbinden klappt problemlos nur: wenn ich in der Datei script.php functionen definiere, sind diese auf dem rufenden Server unbekannt.

    Also

    <some html-code>
    <?
    include 'http://www.testdomain.de/script.php';
    testfunction ();
    ?>

    <....>

    Problem: wenn ich in script.php die Funktion testfunction definiert habe erhalte ich trotzdem die Meldung, dass die Function unbekannt sei.

    Hängt das damit zusammen, dass der Zugriffsrichte (fopen) auf dem Server, dass das Skript enthält, entsprechend gesetzt werden müssen?

    Herzlichen Dank für Tipps.
    Grüße
    Kay

  • #2
    Ich bin zwar kein Held in PHP, aber PHP wird immer Serverseitig ausgeführt. Und in Deinem Falle kann das so gar nicht gehen, da die fkt nicht auf dem Server liegen auf dem es ausgeführt wird!

    Gruß Manfred

    Kommentar


    • #3
      du kannst nur scripte auf dem server includen

      denn so wie du das machst wird der code erst geparst und so included

      also hast du kein zugriff auf die funktion

      Kommentar


      • #4
        HI Trashar,

        ich habe es befürchtet. Gibt es ggf. eine andere Möglichkeit die gewünschte Funktionalität zu erreichen?

        Kommentar


        • #5
          wenn ich dich richtig verstanden habe, kommt die einzubindende datei von deinem server?

          dann mach das doch so:
          PHP-Code:
          //deinedatei.php
          if ($id==1)
            
          testfunc1();
          else if (
          $id==2)
            
          testfunc2();

          //die datei auf dem anderen server
          $id=1;
          include(
          'http://www.domain.tld/deinedatei.php'); 
          oder geht das auch nich?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Original geschrieben von ksendelbach
            HI Trashar,

            ich habe es befürchtet. Gibt es ggf. eine andere Möglichkeit die gewünschte Funktionalität zu erreichen?
            bennene deine datei in .html oder so. dann wird sie bei einem direkt-aufruf im browser, also auch beim include vom server deines freundes, nicht ausgeführt/geparst.

            wenn du diese datei bei dir includest, sollte es ebenfalls funktionieren.

            nachteil: jeder andere user, der die url kennt, hat auch die daten des scriptes.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              @Abraxax:

              abgesehen vom schon erwähnten nachteil habe ich zweifel, ob das überhaupt was bringt.
              der fremde server parst die datei dann nicht - ich habe aber zweifel, ob es der eigene dann tun würde (bei endung .html sicher nicht, aber auch bei anderen eher nicht denke ich). und wenn nicht, bringt es ja auch nicht viel, da ksendelbach ja darin definierte funktionen weiterverwenden wollte.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                bei endung .html sicher nicht, aber auch bei anderen eher nicht denke ich
                das ist richtig. es ist auch nur ein versuch der theorie...

                da include() nur den code (inhalt der datei) an eine bestimmte stelle im script aufnimmt, gehe ich davon aus, dass es funktionieren könnte. das parsen übernimmt ja der server, der die daten includet.

                ich habs nicht ausprobiert, aber es ist ein ansatz......

                davon abgesehen, halte ich es sowieso nicht vorteilhaft, dass er die funktionen auf diese weise zur verfügung stellt. das beste wird eher sein, dass er die fkt.datei(en) seinem freund via mail schickt und er diese auf seinen server hochlädt.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Include: keine Übergabe der Variablenwerte, Bringen Coockies eine Lösung

                  Vielen Dank für die reichhaltigen Hinweise.

                  Das ist ein netter Hinweis, den Code entsprechend an den "Freund" zu schicken. Manchmal sind halt nicht alles Freunde ;-)

                  Spaß beiseite. Unabhängig ob es nun ein Freund ist oder nicht, ist eine derartige Anwendung, wenn Sie denn bei mehreren Eingesetzt wird nicht mehr wartbar. Dann müsste bei jeder Änderung der Code verteilt werden usw. usw.

                  Die Anwendung ist wie folgt:
                  Es gibt ein Forum, dass als Content auf diversen Servern laufen soll. Die Messages sollen zentral liegen und auch zentral mit einer einheitlichen Anwendung von dort abgerufen werden. Ob die Nachrichten in einer DB oder auf einem File vorliegen ist erst einmal sekundär. (Beides geht).

                  Am einfachsten wäre es, wenn vom Server XY (der nicht der ist, auf dem die Skripte selber liegen) eine Funktion aufgerufen wird, die alles weitere übernimmt (siehe initialeintrag von mir).

                  Wie schon diskutiert, ist es nicht ganz so einfach. Ich habe den Funktionsaufruf elemniert, so dass funktionen nur vom Skript aufgerufen werden, dass auf dem "Heimserver" liegt.

                  Nun kommt aber das Problem der Variablenwerte hinzu. Vgl. Eintrag in www.php.net:

                  If you do:

                  <?
                  /* file: script1.php */
                  $var="TEST STRING";
                  include("http://www.domain.com/script2.php");
                  ?>

                  $var will be not set in script2.php. Even if script1.php and script2.php reside on the same server.

                  Instead do:

                  <?
                  /* file: script1.php */
                  $var="TEST STRING";
                  include("script2.php");
                  ?>

                  Same goes with require().

                  Tja.

                  Frage: würden Cookies das Problem lösen? Hier das selbe Prozedere Server XY setzt das Cookie, der Heimserver liest es aus. Geht das?

                  Grüße
                  Kay

                  Kommentar


                  • #10
                    Re: Include: keine Übergabe der Variablenwerte, Bringen Coockies eine Lösung

                    Original geschrieben von ksendelbach
                    Frage: würden Cookies das Problem lösen? Hier das selbe Prozedere Server XY setzt das Cookie, der Heimserver liest es aus. Geht das?
                    tut mir leid, dich enttäuschen zu müssen, aber: nein.

                    cookies können immer nur von der seite wieder ausgelesen werden, die sie auch gesetzt hat.
                    alles andere wäre zu riskant.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Naja Du könntest einen Server benutzen um das Sessionhandling zu übernehmen...

                      ich frage mich nur, was das für ein Forum ist, dass es nicht einfach auf einem Serverlaufen kann und client zugriffe erlaubt...
                      Du beschreibst ja eine Client Server Achitektur bei dem logik in jedem Client liegt...
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        @ksendelbach
                        und warum machst du das nicht mit xml?

                        so können die DB und die scripte auf einem (deinem) server laufen. alle anderen maschinen/freunde/clients können diese daten dann mittels xml abfragen.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Geschafft

                          Hallöle,

                          vielen Dank für die Tipps. Dies hat zu neuem Nachdenken und der reduizierung der Variablen geführt die nun beim Aufruf mit übergeben werden

                          include 'http://www.elswhere.de/script.php?var1=<value>&var2=<value>';

                          Nun wird alles schön angezeigt.

                          Zur Frage, was das für ein komisches Forum ist.

                          Natürlich erlaubt das Forum auch einen direkten Clientzugriff. Die Klimmzüge sind notwendig, damit das Forum, in anderem Gewand, als Content auf anderen Sites angezeigt werden kann.

                          Nach aussen sieht es so aus, als würde hier ein eigenes Forum betrieben, de facto gibt es aber mehrere Zugangswege um das Forum zu bestücken und abzurufen.

                          Wenn's denn mal läuft und wen's interessiert: Email reicht. (ksendelbach@web.de)

                          Grüße
                          Kay

                          P.S.
                          Ich sehe gerade den Eintrag mit XML ... vielleicht in Zukunft. Damit habe ich noch nicht gearbeitet. Nun geht es erst mal so.

                          Kommentar


                          • #14
                            Re: Geschafft

                            Original geschrieben von ksendelbach
                            P.S.
                            Ich sehe gerade den Eintrag mit XML ... vielleicht in Zukunft. Damit habe ich noch nicht gearbeitet. Nun geht es erst mal so.
                            ich habe auch noch nicht damit gearbeitet... aber ich denke schon, dass es der beste weg ist, die daten in die anderen system übertragen zu können.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              XML? vielleicht doch nicht

                              Noch ein Nachtrag: es geht nicht darum Daten auszutauschen, sondern ein komplettes Forum bereitzustellen.

                              So nach dem Motto: du hast kein Forum (oder eins mit wenig Inhalt): nimm' diese drei Zeilen Code und schon hast Du eins.

                              Gruß
                              Kay

                              Kommentar

                              Lädt...
                              X