Flash und PHP Form-Mailer

Heiko

Mitglied
Hallo,

ich bräuchte für ein Projekt mal Eure Hilfe. Ich muss so ein Formmailer erstellen, habe es auch zum Teil hinbekommen, jedoch noch nicht so wie es soll.

Mir fehlt bei der Anrede eine Auswahlliste mit "Herr" "Frau" "Firma",
sowie eine Bedingung, daß das Formular nur verschickt wird wenn alle Felder mit einem Sternchen ausgefüllt sind.
Ebenso bräuchte ich dann eine Meldung das alles einwandfrei versendet wurde.

Habe hier schon die Hilfefunktion benutzt sowie Tutorials, jedoch bekomme ich das einfach nicht so hin. Hauptsächlich geht es mit um die Pflichtfelder mit Sternchen.

Wäre nett wenn Ihr mir so schnell wie möglich helfen könntet, da es schon sehr eilt.


Danke Heiko
 

Anhänge

Hi,

ok, aber ich mache Dir das jetzt nicht fertig, sondern gebe nur mal ein paar Anregungen:

  • setze auf die Schaltfläche zum Abschicken etwa folgenden Code:
PHP:
on (release) {
  // Felder überprüfen: 
  var form_error = _parent.validate_form();
  // Formular versenden, falls kein Fehler gemeldet:
  if (form_error==0) {
    _parent.send_form();
  } else {
    // Fehler anzeigen:
    show_error(form_error);
  }
}
  • diese beiden Funktionen musst Du dann im ersten Frame des Hauptzeitleiste definieren:
PHP:
function validate_form() {
  var error=0;
  if (name=="" || name==undefined) error+=1;
  if (vorname=="" || name==undefined) error+=2;
  if (strasse=="" || strasse==undefined) error+=4;
  if (plz.length!=6) error+=8;
  if (ort=="" || ort==undefined) error+=16;
  if (tel=="" || tel==undefined) error+=32;
  if (fax=="" || fax==undefined) error+=64;
  // und so weiter; für die e-Mail-Adresse würde sich eine RegExp anbieten.
  return error;
}
in der Fehlervariable hast Du dann ein Bit pro möglichem Fehler. Die Funktion show_error(ern) kann diese Zahl bitweise parsen und die Fehler anzeigen (z.B. in einem Textfeld).

  • Wenn Du den Textfeldern Instanznamen gibst, kannst Du die Eingabe zusätzlich begrenzen:
PHP:
t_plz.restrict("0-9");
t_tel.restrict("0-9 /+//");
t_fax.restrict("0-9 /+//");
t_email.restrict("0-9 a-z A-Z /- /. /_ /@");
  • die Funktion send_form() sollte ein LoadVars-Objekt anlegen:
PHP:
function send_form() {
  var mlv = new LoadVars() {
  mlv.name=escape(name);
  mlv.vorname=escape(vorname);
  mlv.strasse=escape(strasse);
  // und so weiter; "escapte" Variablen können in PHP wieder mit urldecode bzw. rawurldecode umgewandelt werden.
  mlv.sendAndLoad("mailer_form.php", mlv, "POST");
  mlv.onLoad=function() {
    // das PHP-Script könnte eine Checkvariable (z.B. success) zurückgeben:
    trace(mlv.success); // zum Erfolgscheck.
    delete this.onLoad;
  }
}

Das PHP-Script habe ich mir jetzt noch nicht angesehen; dafür bin ich zu müde -vielleicht morgen.

Gruß
 
Vielen Dank.

Trotzdem funktionierts irgendwie noch nicht so ganz.


Habe auf dem "Absenden"-Button

PHP:
on (release) {
	// Felder überprüfen: 
	var form_error = _parent.validate_form();
	// Formular versenden, falls kein Fehler gemeldet: 
	if (form_error == 0) {
		_parent.send_form();
	} else {
		// Fehler anzeigen: 
		show_error(form_error);
	}
}

gelegt.


In die Hauptzeitleiste in das erste Bild folgendes:

PHP:
function validate_form() { 
  var error=0; 
  if (name=="" || name==undefined) error+=1; 
  if (vorname=="" || name==undefined) error+=2; 
  if (plz.length!=5) error+=8; 
  if (betreff=="" || betreff==undefined) error+=16; 
  if (msg=="" || msg==undefined) error+=32; 
  if (email=="" || email==undefined) error+=64; 
  // und so weiter; für die e-Mail-Adresse würde sich eine RegExp anbieten. 
  return error; 
}

t_plz.restrict("0-9"); 
t_tel.restrict("0-9 /+//"); 
t_fax.restrict("0-9 /+//"); 
t_email.restrict("0-9 a-z A-Z /- /. /_ /@");



Dies scheint wohl zu funktionieren, kann es aber nicht testen, denn sobald ich diesen Code

PHP:
function send_form() { 
  var mlv = new LoadVars() { 
  mlv.anrede=escape(anrede);
  mlv.name=escape(name); 
  mlv.vorname=escape(vorname); 
  mlv.strasse=escape(strasse); 
  mlv.plz=escape(plz);
  mlv.ort=escape(ort);
  mlv.tel=escape(tel);
  mlv.fax=escape(fax);
  mlv.email=escape(email);
  mlv.betreff=escape(betreff);
  mlv.msg=escape(msg);

  // und so weiter; "escapte" Variablen können in PHP wieder mit urldecode bzw. rawurldecode umgewandelt werden. 
  mlv.sendAndLoad("email_flash.php", mlv, "POST"); 
  mlv.onLoad=function() { 
    // das PHP-Script könnte eine Checkvariable (z.B. success) zurückgeben: 
    trace(mlv.success); // zum Erfolgscheck. 
    delete this.onLoad; 
  } 
}

entweder auf die Hauptzeitleiste oder den "Absenden"-Button lege binkt das Bild ständig und nichts funktioniert.

Habe ich da etwas vergessen? Das mit dem mlv und escape hab ich nicht so verstanden. Den Rest habe ich einigermaßen kapiert, jedoch habe ich einfach zu wenig Ahnung von Programmierung um selbst auf den Fehler zu kommen, bzw. weiss ich garnicht wo ich was ändern sollte.

Kann mir da jemand nochmal weiterhelfen?

Hier ist auch nochmal das Skript von der PHP-Datei die ich benutze.

PHP:
<?php 

$mailaddress = "test@gmx.de"; 
$subject = "$betreff"; 
$absender = "$email"; 

$result = mail($mailaddress, $subject, 

"Anrede: $anrede
Name: $name 
Vorname: $vorname 
     
Strasse: $strasse 
PLZ: $plz 
Ort: $ort 
Nachricht: $msg 
 
From: $email"); 
?>


So wie ich es vorher hatte, hat es ja funktioniert, jedoch konnte ich halt keine Prüfung einbauen ob die Felder ausgefüllt sind. Mich wundert es, dass ich jetzt hier "mlv.sendAndLoad("email_flash.php", mlv, "POST"); " "POST" eingeben muss und nicht so wie ich es vorher hatte "GET".

Wäre cool wenn mir da nochmal jemand weiterhelfen könnte.
 
Hi,

was ich gepostet habe, sind keinesfalls fertige Funktionen, die ohne weiteres in eine Datei eingefügt werden können. (z.B. fehlt überall wo Kommentare mit "und so weiter..." stehen. noch eine MEnge)

Die Funktion show_error() hast Du ja z.B. überhaupt nicht definiert. (hier ist mir übrigens ein kleiner Fehler unterlaufen: alle Funktionen sollten auf der Hauptzeitleiste liegen, daher muss es im Button heißen:
PHP:
_parent.show_error(form_error);
).

Warum Dein Film "blinkt", kann ich nicht sagen - an den Trace-Aktionen dürfe es nicht liegen - und Sprungbefehle (gotoAndPlay) habe ich nirgendwo gesetzt.

- ich bezweifle, dass Du die Variablen einfach so in PHP ansprechen kannst (bin aber selbst nicht fit genug in PHP, um sagen zu können, ob und in welcher Version Du direkt auf die Inhalte superglobaler Arrays zugreifen kannst) - versuch es lieber mit:
PHP:
$name=$_POST["name"];

Gruß

P.S.: Du kannst Deine bisherige Version natürlich auch posten, dann schau ich es mir mal an.
 
Also meine bisherige Version habe ich ja an mein erstes Post drangehängt.
Funktioniert auch. Wäre halt gut wenn ich das so lassen könnte wie es ist und nur das mit den ausgefüllten Feldern hinzufügen könnte.
Denn das ist ja mein Hauptproblem, daß das Formular einfach abgeschickt wird, obwohl nichts eingetragen ist.

Deine Version ist auf alle Fälle professioneller, bräuchte ich aber nicht unbedingt, wozumal ich halt auch leider garnicht so recht verstehe was ich dann noch hinzufügen sollte und wo ich was ändern sollte.
 
Hallo Heiko, hallo Datic,
ich habe kürzlich (für Flash - Beginner) einem Fragesteller
das ins Netz gestellt. (.zip)
Der entscheidende Code liegt auf dem Sende- Button.
Er erklärt sich weitgehend selbst.
Die Fla ist beliebig erweiterbar/ anzupassen.
Vorher anzusehen und zu testen ist das hier .
Erforderliche Erweiterungen in der mailer.php ( Bestätigungs-Mail an
den Absender wie in dem Beispiel) reiche ich erforderlichenfalls sehr gerne nach.
Heiko, teste es einfach einmal ob Dir das zum Ausbau genügt.
(Heute noch 111 Arbeitstage bis zur Pension)
 
...
na zumindest die Funktion zum Testen der Eingaben wirst Du so oder so brauchen. Obwohl das LoadVars-Objekt etliche Vorteile bietet, kannst Du natürlich Deine Version weiterverwenden:
PHP:
on (release) { 
  // Felder überprüfen: 
  var form_error = _parent.validate_form(); 
  // Formular versenden, falls kein Fehler gemeldet: 
  if (form_error==0) { 
    // hierhin den Code zum Versenden, den Du bisher hattest.
  } else { 
    // Fehler anzeigen: 
    // hierhin den Code, um die Fehler anzuzeigen (war ein Sprungbefehl, oder?)
  } 
}
In der Funktion validate_form() fehlen noch einige Abfragen, so z.B. das E-Mail Adressfeld, aber das müsstest Du anhand dessen, was bisher in der Funktion steht eigentlich selbst einfügen können.

Gruß

EDIT:
;) die Version von ojdmanjo tut's natürlich auch, wenn lediglich auf leere Felder getestet werden soll.
 
Zuletzt bearbeitet:
Hallo Datic,
ja, das ( editierte) ist natürlich mit Recht angemerkt.
Was im Beispiel - Fall ausreicht ist nicht für prof. Anwendungen geeignet.
(Es ist eine Lösung von Opa für Enkel)
Es dürfte allerdings mit ein wenig Lernbereitschaft nicht unmöglich sein,
$sendermail auf vorhandenes (at) zu prüfen.
Und vor bösen Buben (fake-Adressen) sind wir alle nicht gefeit.
 
Zurück