Formmailer
marten
- php
0 EKKi0 Der Martin
0 marten0 Shadowcrow0 romy0 marten0 suit
0 Der Martin
0 Marten
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
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
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
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"> </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
'ǝɯɐ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
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
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
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 :)
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
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