DaniO2006: Javascript oder PHP?

Ich habe folgendes Problem:

Ich binde per Javascript eine PHP-Datei ein, die ein Formular anzeigt und alle eingegebenen Daten speichern soll.
Die Anzeige an Sich funktioniert, ich habe auch den Formbereich hinbekommen, so dass auch dieselbe Seite wieder geladen wird.

Allerdings kann ich die $_POST bzw. $_REQUEST Variablen nicht übergeben. Trotz jedem Versuch bekomme ich keinerlei Ausgabe der Form-Variablen, gibt es da eine Lösung? Habe nichts entsprechendes im WWW gefunden !?!

Hier mal der Code, den ich verwende:

document.write('<fieldset style="padding:5px;"><legend><strong><?=$over?></strong></legend>');
...
document.write('<td><input type="text" name="data" value="testdata" size="12" maxlength="12">');
document.write('<input type=submit></td></tr></form></table>');
document.write('<?php echo $_POST['data']; ?>');

Thx 4 Help

  1. document.write("<br><br><table align=center cellpadding=0 cellspacing=0 border=0><form method=post action=" + document.URL + "><tr>");

    hat noch gefehlt, sorry. So definiere ich den Formbereich.

    1. Hallo erstmal!

      document.write("<br><br><table align=center cellpadding=0 cellspacing=0 border=0><form method=post action=" + document.URL + "><tr>");

      Es besteht absolut kein Grund hier JavaScript einzusetzen.

      Gruß aus Berlin!
      eddi

      1. Hallo erstmal!

        document.write("<br><br><table align=center cellpadding=0 cellspacing=0 border=0><form method=post action=" + document.URL + "><tr>");

        Es besteht absolut kein Grund hier JavaScript einzusetzen.

        Gruß aus Berlin!
        eddi

        Doch, da die ausgabe bei der html-datei (auf dem anderen Server) ja per javascript erfolgt!

        1. Hallo erstmal!

          Es besteht absolut kein Grund hier JavaScript einzusetzen.
          Doch, da die ausgabe bei der html-datei (auf dem anderen Server) ja per javascript erfolgt!

          Du hast schon mal etwas von Frames oder Iframes gehört?

          Gruß aus Berlin!
          eddi

    2. Hi DaniO2006,

      document.write("<br><br><table align=center cellpadding=0 cellspacing=0 border=0><form method=post action=" + document.URL + "><tr>");

      Ich sehe das Problem an der Stelle document.URL - das ist dann natürlich die Adresse der HTML Datei, in der das Javascript geladen wird! Also http://user-server.de/datei.html und nicht http://php-server.de/script.js.php.

      Dadurch wird das Formular natürlich an den ersten Server geschickt - der reagiert aber nicht darauf, weil es sich eben nur um eine HTML Datei handelt. Du müsstest das so gestalten denke ich:

      document.write("<form method='post' action='http://[code lang=php]<?php echo $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; ?>'>");[/code]

      Dann hast du allerdings eventuell das Problem, dass du wenn du die POST-Daten empfängst nicht mehr weißt, wo die herkommen, vl. solltest du deshalb noch ein hidden-Feld einfügen, was die Quell-URL angibt:

      document.write("<input type='hidden' name='source' value='" + document.URL + "'>");

      Du kannst dann mit deinem PHP Script entsprechend darauf reagieren - beachte allerdings, dass diese Angabe dann natürlich auch fälschbar ist und du sie also nicht für sicherheits-relevante Zwecke verwenden solltest!

      MfG, Dennis.

  2. Hallo

    Ich binde per Javascript eine PHP-Datei ein, die ein Formular anzeigt und alle eingegebenen Daten speichern soll.
    Die Anzeige an Sich funktioniert, ich habe auch den Formbereich hinbekommen, so dass auch dieselbe Seite wieder geladen wird.

    Du hast einen ziemlich großen Denkfehler bei deinem Vorhaben. Wenn du per Javascript _auf dem Client_ eine Seite zusammenbaust, ist die Sache für PHP (_auf dem Server_) schon gelaufen. Eigentlich ist es jammerschade, dass die browser bei ungültigen tags keine Fehlermeldungen ausgeben, sonst würde man nämlich sehen, dass das <?PHP ... ?> im Quelltext nicht mehr interpretiert wird (wie sollte es auch, wir sind ja schon nicht mehr auf dem Server) sondern klammheimlich weggelassen wird.

    Falls du magst, kannst du ja mal noch ein bisschen ausführlicher den Hintergrund deines Vorhabens schildern (Was spricht zum Beispiel dagegen, eine gewöhnliche HTML Seite zu nehmen?) Es ist nämlich so, dass PHP und Javascript durchaus miteinander kommunizieren können. Nur ist das im allgemeinen nicht trivial.

    Liebe Grüße mbr

    1. Oh, Du hast mich falsch verstanden!
      Was Du gesehen hast, ist der Quellcode der PHP-Datei!
      Der Quellcode der HTML ist:

      <script type="text/javascript" src="http://127.0.0.1/create_form.php?pid=4">
      </script>

      Die PHP-Datei steuert das Javascript!
      Der Plan ist ganz einfach der, dem Benutzer des Scriptes bestimmte Funktionen eines Programmes (PHP), anzubieten, auch wenn dieser kein PHP auf seinem Server installiert hat. Solch ein Einbinden, hab ich mit einem Counter schon mal realisiert, allerdings war da kein Form-Bereich dabei!

      1. Oh, Du hast mich falsch verstanden!

        Upps: Bitte entschuldige. Die Frage ging anscheinend wesentlich tiefer, als ich vermutet hatte...

        Was Du gesehen hast, ist der Quellcode der PHP-Datei!
        Der Quellcode der HTML ist:

        <script type="text/javascript" src="http://127.0.0.1/create_form.php?pid=4">
        </script>

        Die PHP-Datei steuert das Javascript!
        Der Plan ist ganz einfach der, dem Benutzer des Scriptes bestimmte Funktionen eines Programmes (PHP), anzubieten, auch wenn dieser kein PHP auf seinem Server installiert hat. Solch ein Einbinden, hab ich mit einem Counter schon mal realisiert, allerdings war da kein Form-Bereich dabei!

        Kannst du nicht einfach die PHP-Datei in einem iframe einbinden? Oder als Object? Muss allerdings gestehen, dass ich sowas noch nie probiert habe, ist also nur ein Schuß ins Blaue.

        Übrigens: Die Daten werden ja in deinem Beispiel per $_GET übergeben, im OP wolltest du sie aber über $_POST auslesen? Vielleicht liegt ja auch hier der Fehler. Denn eigentlich sollte es ja funktionieren, Javascript mit PHP zu erzeugen.

        Liebe Grüße mbr

    2. Moin,

      Du hast einen ziemlich großen Denkfehler bei deinem Vorhaben. Wenn du per Javascript _auf dem Client_ eine Seite zusammenbaust, ist die Sache für PHP (_auf dem Server_) schon gelaufen.

      den Verdacht mit dem Denkfehler hatte ich auch schon - nach Daniels Erklärung bin ich mir nicht mehr ganz sicher; es könnte sein, dass er etwas viel Raffinierteres treibt, als ich zunächst dachte.

      Eigentlich ist es jammerschade, dass die browser bei ungültigen tags keine Fehlermeldungen ausgeben, sonst würde man nämlich sehen, dass das <?PHP ... ?> im Quelltext nicht mehr interpretiert wird (wie sollte es auch, wir sind ja schon nicht mehr auf dem Server) sondern klammheimlich weggelassen wird.

      Oder anders ausgedrückt: Im Quelltext, der beim Client ankommt, sind die <?php ?> Tags gar nicht mehr drin, da sie vom PHP-Interpreter durch die Ausgabe des Scripts ersetzt werden. Wenn im clientsitigen Quelltext irgendwo ein <?php ?> auftaucht, ist das ein starkes Indiz für einen Konfigurationsfehler beim Server.

      Es ist nämlich so, dass PHP und Javascript durchaus miteinander kommunizieren können. Nur ist das im allgemeinen nicht trivial.

      ACK.

      Schönen Tag noch,
       Martin

      --
      Der Mensch denkt, Gott lenkt.
      Der Mensch dachte, Gott lachte.
      1. ... dass er etwas viel Raffinierteres treibt, als ich zunächst
        dachte.

        Genau! Richtig erkannt! ;o)

        Ich versuchs nochma zu erklären:

        1.Server mit php
        2.server ohne php

        1.server greift per js auf 2.server zu
        2.server führt das programm aus und gibt die ausgabe an den 1. server!

        1. Hi,

          1.server greift per js auf 2.server zu

          Du führst js serverseitig aus?

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hi,

            1.server greift per js auf 2.server zu

            Du führst js serverseitig aus?

            cu,
            Andreas

            Jap. in der html liegt nur ein js, dass die php auf dem 2.server aufruft und dort wird dann alles ausgeführt. NUR die ausgabe erfolgt in der html!

            1. Jap. in der html liegt nur ein js, dass die php auf dem 2.server aufruft und dort wird dann alles ausgeführt. NUR die ausgabe erfolgt in der html!

              wir reden also über Seerverseitiges Skript?

              Struppi.

              1. Jap. in der html liegt nur ein js, dass die php auf dem 2.server aufruft und dort wird dann alles ausgeführt. NUR die ausgabe erfolgt in der html!

                wir reden also über Seerverseitiges Skript?

                Struppi.

                Ja und nu iss die frage, wie ich eine formeingabe an den server mit php übergebe!?!

                1. Lieber DaniO2006,

                  Ja und nu iss die frage, wie ich eine formeingabe an den server mit php übergebe!?!

                  da Deine Kommunikation über Javascript erfolgt, wärest Du auf AJAX-ähnliche Funktionalitäten angewiesen, da eine neue Seite ja nicht vom ursprünglichen Server aus aufgerufen werden kann, denn dabei gingen ja die Rückmeldungen aus dem Formularversand an den anderen Server verloren.

                  Liebe Grüße aus Ellwangen,

                  Felix Riesterer.

                  1. Lieber DaniO2006,

                    Ja und nu iss die frage, wie ich eine formeingabe an den server mit php übergebe!?!
                    da Deine Kommunikation über Javascript erfolgt, wärest Du auf AJAX-ähnliche Funktionalitäten angewiesen, da eine neue Seite ja nicht vom ursprünglichen Server aus aufgerufen werden kann, denn dabei gingen ja die Rückmeldungen aus dem Formularversand an den anderen Server verloren.

                    Liebe Grüße aus Ellwangen,

                    Felix Riesterer.

                    ohja! danke! das war es!

                  2. Moin!

                    da Deine Kommunikation über Javascript erfolgt, wärest Du auf AJAX-ähnliche Funktionalitäten angewiesen, da eine neue Seite ja nicht vom ursprünglichen Server aus aufgerufen werden kann, denn dabei gingen ja die Rückmeldungen aus dem Formularversand an den anderen Server verloren.

                    Same-Origin-Policy gilt auch für AJAX, d.h. nachzuladen bzw. ansprechbar wären nur Skripte auf dem Server, von dem die HTML-Seite herkommt. Und das bringt nichts, weil da kein PHP läuft, das mit entsprechenden Informationen etwas anfangen und sie verarbeiten kann.

                    - Sven Rautenberg

                    --
                    My sssignature, my preciousssss!
                    1. Lieber Sven,

                      Same-Origin-Policy

                      soweit habe ich in meiner Antwort nicht gedacht. Natürlich hast Du Recht und das geplante Vorhaben ist damit automatisch zum Scheitern verurteilt.

                      Mal sehen, ob der OP das merkt, um dann wieder nachzufragen. :-)

                      Liebe Grüße aus Ellwangen,

                      Felix Riesterer.

                2. wir reden also über Seerverseitiges Skript?

                  Struppi.

                  Ja und nu iss die frage, wie ich eine formeingabe an den server mit php übergebe!?!

                  Nein, wir reden nicht über serverseitges JS.
                  Wenn du AJAX einsetzen willst, dann läuft das im Browser, also auf dem Client.

                  Struppi.

        2. Lieber DaniO2006,

          Ich versuchs nochma zu erklären:

          1.Server mit php
          2.server ohne php

          1.server greift per js auf 2.server zu
          2.server führt das programm aus und gibt die ausgabe an den 1. server!

          Verwechslung? Ich verstehe Dein Anliegen so:

          1. Server (User-Server, ohne PHP)
          2. Server (DaniO2006-Server, _mit_ PHP)
          3. User mit Browser und aktiviertem JS

          Vorgang:
          * Browser fordert Seite von seinem User-Server an, der ihm im HTML-Code eine Referenz auf ein (serverfremdes) JS mitgibt, da er selbst kein PHP hat.
          * Browser interpretiert das JS und fordert einen PHP-geparsten Inhalt vom DaniO2006-Server an (das tatsächliche Javascript).
          * Browser kann serverseitige Funktionalitäten über den DaniO2006-Server (per eingebundenem Javascript) nutzen, da der User-Server diese nicht bereitstellen kann.

          DaniO2006-Server lässt sich für diverse serverseitige Dinge gebrauchen. Was der DaniO2006-Server allerdings mit POST-Inhalten anstellt (oder was man auf ihm damit alles anstellen kann!), bleibt auszuprobieren.

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.