marten: Formmailer

Hallo liebe Forumsteilnehmer,

ich habe einen einfachen aber voll funktionsfahigen Formmailer auf meiner Homepage.

Problembeschreibung:
Binde ich diesen Formmailer in einen iframe ein (also der User kann das Formular innerhalb eines scrollbaren Fensters <iframe> erkennen und dort dann auch ausfüllen und abschicken), funktioniert der Formmailer, sprich die SUBMIT-Funktion nicht.

Das einzige was passiert ist, das nach dem drücken des Sende-Buttons die iframe-Inhalte neu eingelesen werden bzw. wieder zurück zur Ausgangsposition bzw. nach oben gescrollt werden.

Frage:
Was ist bei der Einbindung eines Formmailers in einen iframe zu beachten bzw. anders zu machen, um die Funktionsfähigkeit des Formmailers zu gewährleisten? Oder ist es gar ausgeschlossen, einen Formmailer aus einem iframe heraus zu starten?

Gruß Marten

  1. Mahlzeit marten,

    Das einzige was passiert ist, das nach dem drücken des Sende-Buttons die iframe-Inhalte neu eingelesen werden bzw. wieder zurück zur Ausgangsposition bzw. nach oben gescrollt werden.

    Zeige relevanten Quellcode oder ein Online-Beispiel, anhand dessen man den Fehler nachvollziehen kann. Die "Problembeschreibung" ist leider zu wenig aussagekräftig.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallo,

    Binde ich diesen Formmailer in einen iframe ein (also der User kann das Formular innerhalb eines scrollbaren Fensters <iframe> erkennen und dort dann auch ausfüllen und abschicken), funktioniert der Formmailer, sprich die SUBMIT-Funktion nicht.
    Das einzige was passiert ist, das nach dem drücken des Sende-Buttons die iframe-Inhalte neu eingelesen werden bzw. wieder zurück zur Ausgangsposition bzw. nach oben gescrollt werden.

    das entspricht nicht dem üblichen Verhalten, das man erwarten sollte. Es sei denn, das Formularziel wertet die Parameter nicht aus - beispielsweise, weil es eine herkömmliche, statische HTML-Datei anstelle eines Scripts ist. Die wird natürlich nicht auf die Parameter reagieren, sondern einfach neu geladen und gut.

    Was ist bei der Einbindung eines Formmailers in einen iframe zu beachten bzw. anders zu machen, um die Funktionsfähigkeit des Formmailers zu gewährleisten?

    Nichts.
    Ein iframe ist ein eigenständiges Browserfenster, nur dass es halt optisch in ein anderes Dokument eingebettet ist. Technisch unterscheidet sich ein Formularversand aus einem iframe durch nichts von einem entsprechenden Formularversand ohne iframe.

    Oder ist es gar ausgeschlossen, einen Formmailer aus einem iframe heraus zu starten?

    Nein.
    Ich kann mich nur EKKi anschließen: "Lass mal sehen!" Idealerweise als Online-Beispiel.

    Ciao,
     Martin

    --
    Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.
      (Henry Ford, amerikanischer Industriepionier)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo Ihr,

      Danke erstmal für Eure rasche Antwort.

      Ich hab jetzt mal einen Link vorbereitet, der das Problem veranschaulicht:

      http://www.wp1083220.wp117.webpack.hosteurope.de/versuch/op/menuepunkte/menue_kontakt.php

      Ihr befindet Euch hier im Hauptmenuepunkt KONTAKT.

      Dort seht Ihr den iframe, wo ihr mal den Link zum

      Kontaktformular "Allgemeine Anfrage"

      drückt. Damit habt und seht ihr dann das Formular, so wie ich es mir wünsche (optisch gesehen, erstmal). Da könnt ihr irgendwas eingeben und absenden drücken. Reaktion: Reload, ohne weiteres Ergebnis.

      Unter dem iframe seht ihr (hab ich jetzt mal auf die schnelle dahin kopiert) das absolut selbige Kontaktformular (sieht n bisschen verschoben aus, macht aber nix). Füllt das Ding mal aus und schickt es ab. Reaktion: Die gewünschte Nachricht an den User erscheint.

      So und programmtechnisch sieht das ganze so aus:
      Es gibt eine function in einem seperaten Verzeichnis mit dem namen "fkt_formular.php", der Quelltext ist der hier:
      -------------------------------------------------------------------------
      <?php
      $strEmpfaenger = 'martenbreuss@gmx.de';
      $strFrom       = '"Formular von HP michaelis-mobile-massage"';
      $x        = 1;
      $strSubject    = 'blanko'.$x;
      $strDelimiter  = ":\t";

      if($_POST)
      {
       $strMailtext = "";

      while(list($strName,$value) = each($_POST))
       {
        $x = $x +1;
        if(is_array($value))
        {
         foreach($value as $value_array)
         {
          $strMailtext .= $strName.$strDelimiter.$value_array."\n";
         }
        }
        else
        {
         $strMailtext .= $strName.$strDelimiter.$value."\n";
        }
       }

      if(get_magic_quotes_gpc())
       {
        $strMailtext = stripslashes($strMailtext);
       }

      if($x == 4){$strSubject = 'Bitte um Rueckruf'.$x;}
       if($x == 10){$strSubject = 'Geschaeftliche Anfrage'.$x;}
       if($x == 13){$strSubject = 'Massage-Buchung'.$x;}

      mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
        or die("Die Mail konnte nicht versendet werden.");

      if($x == 4) {echo "<meta http-equiv="refresh" content="0; URL=menue_form_callback.php">";}
       if($x == 10) {echo "<meta http-equiv="refresh" content="0; URL=menue_form_business.php">";}
       if($x == 13) {echo "<meta http-equiv="refresh" content="0; URL=menue_form_privat.php">";}

      exit;
      }
      ?>
      ------------------------------------------------------------------------
      So und dann gibt es ein anderes Verzeichnis, wo die verschiedenen Formulare beschrieben sind. Das Das Formular des genannten und gezeigten Beispiels trägt den Namen "form_kontakt.php" und hat folgenden Quellcode:

      ------------------------------------------------------------------------
      <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post" style="margin-left:7px; margin-top:3px">
                  <dl>
                      <dt style="height:21px">Mitteilung:<br><textarea name="Mitteilung" maxlength="1000" value="" rows="5" wrap="Soft" style="width: 560px; margin-left:0px;
                       margin-bottom:10px; border:0px; background-image:url(../bilder/form_grau11.png); background-repeat:no-repeat; height:70px; letter-spacing:1pt;
                       font-size:0.7em; font-weight:500; font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px;
                       padding-left:3px"></textarea><br></dt>

      <dt style="height:21px; margin-bottom:3px">Kontakt per: <select name="Kontakt per" size="1" style="width:80px; margin-left:90px; margin-bottom:3px;                  margin-top:10px; border:0px; background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-                       size:0.7em; font-weight:500; font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px">
                      <option>- -</option>
                      <option>Email</option>
                      <option>Telefon</option>
                      <option>Fax</option>
                      <option>Post</option>
                      </select> an: <br></dt>

      <dt style="height:21px">Vor- / Nachname: <input type="text" name="Vor-/Nachname" size="24" style="margin-left:49px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px" /></dt>

      <dt style="height:21px">Straße / Hausnummer: <input type="text" name="Strasse/Hausnummer" size="24" style="margin-left:15px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px" /></dt>

      <dt style="height:21px">Ort / Postleitzahl: <input type="text" name="Ort/PLZ" size="24" style="margin-left:47px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px"/>
                      <input type="button" onclick="location.href='../menuepunkte/menue_terminplaner.php';" value="Terminplaner" style="letter-spacing:1pt; font-size:0.9em;                   font-weight:500; font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:0px; padding-right:11px; padding-left:11px; margin-left:73px"/>
                      </dt>

      <dt style="height:21px">Telefonnummer: <input type="text" name="Telefonnummer" size="24" style="margin-left:64px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px" /></dt>

      <dt style="height:21px">Erreichbarkeit: <input type="text" name="Erreichbarkeit" size="24" style="margin-left:73px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px" />
                      <input type="button" onclick="location.href='../menuepunkte/menue_kontakt.php';" value="Kontaktalternative" style="letter-spacing:1pt; font-size:0.9em;                  font-weight:500; font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:0px; padding-right:11px; padding-left:11px; margin-left:32px"/>
                      </dt>

      <dt style="height:21px">Faxnummer: <input type="text" name="Faxnummer" size="24" style="margin-left:94px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px"/></dt>

      <dt style="height:23px">Email-Adresse: <input type="text" name="Email-Adresse" size="24" style="margin-left:72px; border:0px;
                       background-image:url(../bilder/form_grau10.png); background-repeat:no-repeat; height:18px; letter-spacing:1pt; font-size:0.9em; font-weight:500;                        font-family:Verdana; color:#745A33; padding-top:0px; padding-bottom:1px; padding-right:4px; padding-left:3px" />
                      <input type="submit" value="Senden" style="letter-spacing:1pt; font-size:0.9em; font-weight:500; font-family:Verdana; color:#745A33;                                   padding-top:0px; padding-bottom:0px; padding-right:11px; padding-left:11px; margin-left:113px"/></dt>
                  </dl>
      </form>
      --------------------------------------------------------------------------

      Bei der Einbindung an der gewünschten Stelle auf der Homepage schreibe ich dann folgenden text:

      --------------------------------------------------------------------------
      BEZEICHNUNG, UNWICHTIG
      <p style="margin-top: 22px; margin-bottom:310px;">
      <strong><a name="KFalga">Kontaktformular "Allgemeine Anfragen"</a></strong></p>

      ZURÜCKPFEIL, UNWICHTIG
      <p style="margin-bottom:35px;"><a href="javascript:history.back()"><img
      src="../bilder/pfeil2.png" title="zurück"></a></p>

      DARSTELLUNG EINES FORMULARRAHMENS UND HINTERGRUNDS
      <div style="position:absolute; top:705px; left:240px">
      <button style="padding-left:300; padding-right:300; padding-top:100px;
      padding-bottom:180px">&nbsp;</button>
      </div>

      POSITIONIERUNG DES EIGENTL. TECHNISCHEN FORMULARS MIT DEREN AUFRUF
      <div style="position:absolute; top:710px; left:245px">
         <font face="Verdana" style="letter-spacing:1pt; font-size:1em; font-weight:100; font-family:Verdana; color:#745A33">
              <?PHP include("../formulare/form_kontakt.php");?>
         </font>
      </div>
      -------------------------------------------------------------------------

      Also ich glaube das das Formular die Funktion nicht findet. Als wenn die Funktion versteckt wäre, sozusagen die Funktion nicht global genug definiert ist oder so. Komisch, was?

      Gruß Marten

      1. 'ǝɯɐu$ ıɥ

        Ich hab jetzt mal einen Link vorbereitet, der das Problem veranschaulicht:

        drückt. Damit habt und seht ihr dann das Formular, so wie ich es mir wünsche (optisch gesehen, erstmal). Da könnt ihr irgendwas eingeben und absenden drücken. Reaktion: Reload, ohne weiteres Ergebnis.

        Stimmt der Link zur menue_kontakt.php (im iFrame)? Gib den mal absolut an (http://....).

        ssnɹƃ
        ʍopɐɥs

        --
        I like children. If they're properly cooked.
        - W.C. Fields
      2. Hallo marten,

        mal Tipps zum rausfinden, ohne mich jetzt durchgewühlt zu haben:

        -> Dort wo die Mail versendet wird, machst du mal eine Ausgabe vor allen Bedingungen um zu sehen, ob diese Seite überhaupt aufgerufen/includiert wird

        -> Wohin führt die Variable $_SERVER["php_self"], ist das in beiden Fällen gleich?

        Normal müsste doch, da du die gleiche Seite neu lädst im Kopf der Zeile PHP-Code drinstehen. Ist das auch bei der im iframe eingebundenen Seite so?

        ciao
        romy

      3. Achtung, Achtung! Bitte erstmal für die Prüfung bzw. den Test oder das Angucken den Browser OPERA benutzen. Für die anderen Browser ist das Ganze noch nicht angepaßt!!! Sorry

        Gruß Marten

        1. Achtung, Achtung! Bitte erstmal für die Prüfung bzw. den Test oder das Angucken den Browser OPERA benutzen. Für die anderen Browser ist das Ganze noch nicht angepaßt!!! Sorry

          Ich glaub weniger, dass derart verhundster Code für Opera angepasst wurde - die Opera-Entwickler würden sich im Grabe umdrehen, wenn sie wüssten, dass Ihr Browser so eine Seite rendern muss - nein halt, die leben ja noch :)

      4. Hi,

        http://www.wp1083220.wp117.webpack.hosteurope.de/versuch/op/menuepunkte/menue_kontakt.php

        autsch - das ist kein valides HTML-Dokument. Da fehlt nicht nur der DOCTYPE, sondern das komplette head-Element. Und das Formular "Allgemeine Anfragen" steht einmal im Dokument selbst, und dann ein zweites Mal im iframe. Weißt du, was du tust?

        Ihr befindet Euch hier im Hauptmenuepunkt KONTAKT.
        Dort seht Ihr den iframe, wo ihr mal den Link zum
        Kontaktformular "Allgemeine Anfrage"
        drückt.

        Dann lande ich auf "/versuch/op/i_texte/i_text_kontakt_b.php#KFalga", und das ist erst recht kein vollständiges HTML-Dokument, sondern es beginnt unvermittelt mit einem font-Element. Das ist nicht dein Ernst, oder?
        Davon abgesehen - das Formular verweist wieder auf sich selbst, okay.

        Damit habt und seht ihr dann das Formular, so wie ich es mir wünsche (optisch gesehen, erstmal). Da könnt ihr irgendwas eingeben und absenden drücken. Reaktion: Reload, ohne weiteres Ergebnis.

        Ja. Das Formular wird abgeschickt, aber die eingegebenen Daten nicht verarbeitet.

        Unter dem iframe seht ihr (hab ich jetzt mal auf die schnelle dahin kopiert) das absolut selbige Kontaktformular (sieht n bisschen verschoben aus, macht aber nix). Füllt das Ding mal aus und schickt es ab. Reaktion: Die gewünschte Nachricht an den User erscheint.

        Das wird auch an ein anderes Ziel verschickt, nämlich an "/versuch/op/menuepunkte/menue_kontakt.php".

        Blickst du tatsächlich noch durch? - Also ich nicht.

        Bei der Einbindung an der gewünschten Stelle auf der Homepage schreibe ich dann folgenden text:
        POSITIONIERUNG DES EIGENTL. TECHNISCHEN FORMULARS MIT DEREN AUFRUF
                <?PHP include("../formulare/form_kontakt.php");?>

        Jetzt frage ich mich echt, wozu du dich noch mit einem iframe-Element herumschlägst, wenn du andererseits direkt in PHP die Möglichkeit hast und nutzt, Includes zu verwenden.

        So long,
         Martin

        --
        Gültig sind Frauen ab 16, wohlgeformt ab 160 Pfund.
          (Gunnar Bittersmann)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. Hallo liebe Forumsteilnehmer,

    ich habe das Problem gelöst:

    1.Korrektur
    ich habe die Formularverarbeitungsfunktion an der falschen Stelle eingebettet.

    Der Befehl

    <?PHP include("../funktionen/fkt_formular.php");?>

    mußte nicht in der Datei stehn, in der das iframe beschrieben und aufgerufen wird, sondern in der Datei, die vom iframe aufgerufen und im selben zur Anzeige gebracht wird.

    Logisch den in der vom iframe auferufenen Seite befindet sich ja auch das Formular, jedenfalls bei mir, weil es so mein Wunsch war und ist.

    2.Korrektur
    In der Formularverarbeitungsfunktion gibt es eine Ausgabe-Anweisung mit dem Verweis auf eine anzuzeigene Antwortseite. Die Adresse dieser Antwortseite, die URL, mußte ich von

    URL=menue_form_business.php

    auf

    URL=../menuepunkte/menue_form_business.php

    ändern.

    Fazit:
    Vor der Idee die Formulare über iframes anzeigen zu lassen waren alle "Einstellungen" korrekt und alles hat funktioniert.

    Die Einbindung von iframe und das Anzeigen lassen der Formulare in diesem iframe hat zu einer Art Verschachtelung geführt, die das Formular die eigentlich vorhandene und eingebettete Funktion nicht mehr finden lassen und relative Dateipfadwege zur auszugebenen Antwortseite verändert hat.

    Merke iframe mit Funktion = Aufpassen!

    Beim Einbinden von Formularen mit php-include hätten keine dieser Änderungen vorgenommen werden müssen!

    Vielen Dank für Euer aufopferungsvolles Kopfzerbrechen!

    Liebe Grüße Marten