Formmailer problem mit umlauten

docma

Erfahrenes Mitglied
Hallo

Habe ein Flash mit Kontaktformular die Umlaute werden allerdings beim Empfänger alle falsch dargestellt. Habe ich einen Fehler in der Programierung?

Flash Code
this.onEnterFrame = function() {
but1.setText("Löschen");
but2.setText("Abschicken");
delete this.onEnterFrame;
}

restrictFields();

function restrictFields() {
msg_forename.restrict = msg_lastname.restrict = "a-zA-Z.\\-öäüÖÄÜß";
msg_tel.restrict = "0-9/\\- ";
msg_mail.restrict = "a-zA-Z0-9_\\-.@";
}

function checkForm() {
var error = 0;
error += (msg_lastname.text.length < 2)? 1 : 0;
error += (msg_forename.text.length < 2)? 2 : 0;
error += (msg_tel.text.length < 4)? 4 : 0;
error += (msg_mail.text.length < 10)? 8 : 0;
error += (msg_mail.text.indexOf("@") < 3 || msg_mail.text.lastIndexOf("@") > msg_mail.text.length - 4) ? 16 : 0;
error += (msg_mail.text.indexOf(".") < 3 || msg_mail.text.lastIndexOf("@") > msg_mail.text.length - 2) ? 32 : 0;
error += (msg_message.text.length < 2) ? 64 : 0;
return error;
}

function sendForm() {
var error = checkForm();
if (error == 0) {
var LV = new LoadVars();
LV.msg_lastname = escape(msg_lastname.text);
LV.msg_forename = escape(msg_forename.text);
LV.msg_tel = escape(msg_tel.text);
LV.msg_mail = escape(msg_mail.text);
LV.msg_message = escape(msg_message.text);
LV.sendAndLoad("mailto.php", LV, "POST");
LV.onLoad = function() {
display.text = "\n> ";
if (this.answer != undefined) {
display.text += unescape(this.answer);
} else {
display.text += "Ein unbekannter Fehler ist aufgetreten!";
}
if (this.success == "true") clearForm();
}
} else {
display.text = errorMsg(error);
}
}

function errorMsg(error) {
var estr = "";
if (error >> 6) {estr += "\n> Geben Sie eine Nachricht ein"; error -= 64;}
if (error >> 5) {estr += "\n> ungültige Domain in der eMail-Adresse"; error -= 32;}
if (error >> 4) {estr += "\n> ungültige eMail-Adresse"; error -= 16;}
if (error >> 3) {estr += "\n> Geben Sie eine eMail-Adresse ein"; error -= 8;}
if (error >> 2) {estr += "\n> Geben Sie eine Telefonnummer ein"; error -= 4;}
if (error >> 1) {estr += "\n> Geben Sie Ihren Vornamen ein"; error -= 2;}
if (error >> 0) {estr += "\n> Geben Sie Ihren Nachnamen ein";}
return estr;
}

function clearForm() {
msg_lastname.text = "";
msg_forename.text = "";
msg_tel.text = "";
msg_mail.text = "";
msg_message.text = "";
}

PHP Code
<?php
$answer = "Keine Daten zum Verschicken";

if (isset($_POST["msg_message"])) {
$msg = "Nachricht von: ".urldecode($_POST["msg_forename"])." ".urldecode($_POST["msg_lastname"])."\n";
$msg .= " Telefon: ".urldecode($_POST["msg_tel"])."\n";
$msg .= " e-Mail: ".urldecode($_POST["msg_mail"])."\n\n";
$msg .= urldecode($_POST["msg_message"]);

if (mail("emailadresse@test.de", "Formmailer", $msg) == true) {
echo("success=true&");
}
$answer = "Ihre Nachricht wurde verschickt";
}

echo("answer=".urlencode($answer));

?>
 
Hi,

probiers mal mit
Code:
System.useCodePage = true;
im ersten Frame des Flashfilms oder mit
PHP:
utf8_decode(urldecode($_POST["msg_forename"]));
im PHP-Script (so mit allen Variablen verfahren, die per $_POST übergeben wurden!).

Alternativ könntest Du das Problem wohl mit der Angabe eines entsprechenden Headers beim Versenden der Mail lösen - schau dazu aber lieber mal im PHP-Forum vorbei. ;)

Gruß

P.S.: Es wäre sehr hilfreich, wenn Du Deinen Code einrücken würdest (hier war das Lesen zwar kein Problem, da es sich um mein eigenes Formmailer-Script handelt, aber generell wird nicht eingerückter Code schnell unleserlich). ;)
.
 
Hallo

Danke für deine schnelle Antwort.
Ich probiere es heute oder morgen Abend aus.
 
Vielen Dank

Mit dem Flash-Code funktionierte es nicht, habe es dan aber mit dem PHP-code geschaft.
 
Hallo

Zusätzliche Frage:

Bei disem skript wird jetzt die email als text angezeigt aber beim empfänger kommt die email mit dem Titel "Von" vom Servername.
Ist es möglich das die eingegebene email in "Von" angezeigt wird?
 
Hey

Ja da habe ich mal nachgesehen besser gesagt mal grob darübergelesen, bin allerdings nicht ganz schlau geworden da ich noch nicht so der php freak bin und ich nicht ganz weiss ob es hier unterschiede gibt da ich es von Flash aus sende.

Ich werde es noch genauer ansehen, sonst wäre ich auch froh wenn jemand mir das kurz erklährt (Muss es in spätestens zwei Tagen abgeben)

Danke
 
Hi,

das hat nichts mit Flash zu tun, sondern ist eine reine PHP-Sache.

Die verwendete E-Mail Adresse steht in
PHP:
urldecode($_POST["msg_mail"])

Die kannst Du nun im Header als Absender angeben:
PHP:
$mail = urldecode($_POST["msg_mail"]);
$mail = split("\n", $mail );
$headers = "From: ".$mail[0])
if (mail("emailadresse@test.de", "Formmailer", $msg, $headers) == true) {

Bei Problemen wende Dich bitte ans PHP-Forum - ich hab im Moment auch leider keine Zeit, dort zu suchen. ;)

Gruß
.
 
Zurück