Problem mit Mailformular (Flash + PHP)

Dead_Poet

Mitglied
Hallo und ein frohes neues Jahr zusammen!

Ich verzweifle gerade an einem Flash-Formular, das die Inhalte von 3 Eingabefeldern per PHP-Skript an eine Mail-Adresse verschicken soll. Sollte ja eigentlich nicht sonderlich kompliziert sein. Hab mich auch schon durch das Flashpaper-Tutorial von Datic gehangelt und soweit alles verstanden.
Situation:
Ich habe 3 Textfelder mit Eingabetext: name, email und nachricht.
Den Inhalt dieser 3 Felder will ich nun durch Druck auf einen einfachen "Abschicken"-Button über ein PHP-Skript an eine Mail-Adresse schicken.
Auf dem Button liegt folgendes ActionScript:
Code:
on (release) {
	if (name === undefined || name.length < 3) {
		_root.gotoAndStop("mail-fehler");
	} else if (email === undefined || email.indexOf("@")<1 || email.length < 8) {
		_root.gotoAndStop("mail-fehler");
	} else if (nachricht === undefined || nachricht < 3) {
		_root.gotoAndStop("mail-fehler");
	} else { 
		v = new LoadVars();
		v.email = escape(email);
		v.nachricht = escape(nachricht);
		v.name = escape(name);
		v.sendAndLoad("feedback.php",v,"POST");
		v.onLoad = function() {
			if(this.erfolg == "true") {
				_root.mail_status = _root.mail_erfolg;
				_root.gotoAndPlay("mail-korrekt");
			} else {
				_root.mail_status = _root.mail_fehler;
				_root.gotoAndStop("mail-fehler");
			}
		}
	}
}
"mail-korrekt" und "mail-fehler" sind dabei Frames, in denen dem Nutzer eine Rückmeldung gegeben wird: "mail-korrekt": Alles OK!; "mail-fehler": Fehler beim verschicken.

Dazu habe ich dann noch folgendes PHP-Skript:
feedback.php
PHP:
<?php

$datum = date("d.m.Y - H:i");

$text = str_replace("%0D","\n",$_POST["nachricht"]);
$text = urldecode($text);

//------------------------- Textausgabe Start -------------------------//
$mail_text = $_POST["name"]." schrieb am $datum:
------------------------

".$text."

------------------------
Email Adresse: ".$_POST["email"]
//----------------------- Textausgabe Ende ---------------------------//


if(mail("bla@bla.de","Feedback",$mail_text,"From: ".$_POST["name"]." <".$_POST["email"].">")) {
    echo("&erfolg=true&");
} else {
    echo("&erfolg=false&");
}

?>

Ich bin jetzt mit meinem Latein am Ende und wollte hier mal in die Runde fragen, ob jemand so spontan nen Fehler entdeckt.
Beim Verschicken lande ich immer bei "mail-fehler". :(

Gruß,
Poet
 
Hi,

was mir spontan aufgefallen ist:

- Muss es unbedingt strikte Gleichheit sein (name === undefined) ?

- ich denke, hier hast Du ein ".length" vergessen: (nachricht === undefined || nachricht < 3)

- liegen "name", "email" und "nachricht" nicht auch auf _root? (Es ist immer problematisch ganze Routinen in Ereignishandler in Symbolen zu packen, da man dann leicht mit der Adressierung durcheinander kommt.

- lass Dir in dieser Routine mal alles mögliche mit trace ausgeben:
PHP:
trace(nachricht);
// oder auch nach dem Versenden:
lv.onLoad = function() {
    trace(this.erfolg);
- "name" ist ein reserviertes Wort und sollte nicht für eine Variable verwendet werden.

Gruß
.
 
Datic hat gesagt.:
- Muss es unbedingt strikte Gleichheit sein (name === undefined) ?

- ich denke, hier hast Du ein ".length" vergessen: (nachricht === undefined || nachricht < 3)

- liegen "name", "email" und "nachricht" nicht auch auf _root? (Es ist immer problematisch ganze Routinen in Ereignishandler in Symbolen zu packen, da man dann leicht mit der Adressierung durcheinander kommt.

...

- "name" ist ein reserviertes Wort und sollte nicht für eine Variable verwendet werden.

Hab's korrigert. Aber leider ohne Erfolg. :(

Datic hat gesagt.:
- lass Dir in dieser Routine mal alles mögliche mit trace ausgeben:
PHP:
trace(nachricht);
// oder auch nach dem Versenden:
lv.onLoad = function() {
    trace(this.erfolg);

Also wenn ich's auf meinem Rechner teste, dann ist this.erfolg natürlich false. Mails mit PHP verschicken funktioniert doch nur online auf nem Server, oder?
Gibt's ne Möglichkeit, sich die trace-Ausgaben auch in der Online-Version der Flash-Seite anzugucken?

Danke jedenfalls schonmal für die schnelle Hilfe. Leider hat's bisher noch nich funktioniert. :(

Gruß
 
Hi,

nun ja, Du könntest Dir zum online-Testen irgendwo ein Textfeld hinsetzen, wo Du die Ausgaben (statt trace) hineinsetzt.

... oder Du postest Die Datei einmal, dann ich ich das mal eben hier testen. ;)

Gruß
.
 
Hallo nochmal!

Hab deinen Tip mit dem Textfeld statt trace mal probiert und kriege dort jetzt für this.erfolg ein "undefined" Langsam versteh ich echt gar nix mehr.

Hab einfach ein dyn. Textfeld hinzugefügt und als Variablenbezeichnung "testtext" angegeben. Danach dann in die onLoad noch:

Code:
_root.testtext = this.erfolg;

Im Offline-Modus auf meinem Rechner hat er mir immerhin noch "false" angezeigt.
 
Zuletzt bearbeitet:
_root.testtext = this.erfolg
Ich nehme an, testtext ist die Textfeldvariable und nicht die Textfeldinstanz? Wenn "erfolg" nach dem Senden "undefined" ist, deutet das darauf hin, dass Dein PHP-Script keinen Wert zurückgibt (in sofern kann erfolg offline bei Dir nicht "false" sein, da Du das Script ja nicht aufrufst). Lass Dein PHp-Script doch einfach eine Textdatei anlegen, in die Du alle möglichen Abläufe (Variablen) schreibst (z.B. errorlog.txt).

Wenn ich (wie gesagt) die Datei sehen würde, ließe sich der Fehler sicher schnell einkreisen.

Gruß
.
 
Hi,

soweit ich das sehen kann, hast Du nur ein Semikolon in der PHP-Datei vergessen:
PHP:
Email Adresse: ".$_POST["email"];
Apache gab mir eine Fehlermeldung in Zeile 19 aus, die damit behoben sein dürfte. Da ich hier keinen Mailserver laufen habe, kann ich den Versand nicht testen, aber probier es doch noch einmal online aus. ;)

Gruß
.
 

Neue Beiträge

Zurück