PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
PHPmailer und Umlaute
Beitrag
<blockquote data-quote="Cortax" data-source="post: 2361114" data-attributes="member: 671210"><p>Guten Abend!</p><p></p><p>Ich weiss, das Thema gibt es schon wie Sand am Meer aber ich krieg's einfach nicht hin...</p><p></p><p>Hab ein Kontaktformular mit einem PHP-Skript, dass die php-mailer-class verwendet. </p><p></p><p>Habe ein Problem mit Umlauten</p><p></p><p> </p><p></p><p>Bei dem Nachrichten-Feld gehen zwar alle Zeichen, beim Betreff geht aber das € - Zeichen nicht</p><p>und von Emailaddresse (siehe rechts) über Vorname+Nachname wird's dann immer schlimmer... </p><p></p><p>Hab schon 100 verschiedene Sachen ausprobiert, aber nichts hilft so dass es komplett funktioniert. </p><p></p><p>Hier das Skript: </p><p>[PHP]<?php</p><p></p><p>require('../phpmailer/class.phpmailer.php');</p><p></p><p>//Anti-Injection-Skript einbinden</p><p>include '../antiinjection.php';</p><p></p><p>$ngcvalidation = file_get_contents(str_replace(" ", "", "http://www.kostenloses-captcha.de/validation.php?ngid=".$_POST['ngidtransfer']."&secr=".$_POST['SecR']."&secb=".$_POST['SecB']."&secg=".$_POST['SecG'].""));</p><p>//$ngcvalidation bekommt den String "true" zugewiesen, wenn die Sicherheitseingabe korrekt war</p><p>//$ngcvalidation bekommt den String "false" zugewiesen, wenn die Sicherheitseingabe inkorrekt war</p><p></p><p>if ($ngcvalidation == "false")</p><p>{</p><p> ob_start();</p><p> echo "Falsche Eingabe beim Sicherheitscode!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit; </p><p>}</p><p></p><p>else</p><p>{</p><p> if (!IsSet ($_POST['vorname'],$_POST['nachname'],$_POST['email'],$_POST['betreff'],$_POST['nachricht'])</p><p> || !is_string($_POST['vorname'])</p><p> || !is_string($_POST['nachname'])</p><p> || !is_string($_POST['email'])</p><p> || !is_string($_POST['betreff'])</p><p> || !is_string($_POST['nachricht']))</p><p> {</p><p> ob_start();</p><p> echo "Falsche Eingabe!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit; </p><p> }</p><p> </p><p></p><p> if($_POST['vorname'] == "Vorname" || $_POST['vorname'] == "" )</p><p> {</p><p> ob_start();</p><p> echo "Keinen Vornamen eingegeben!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit; </p><p> }</p><p> else</p><p> if($_POST['nachname'] == "Nachname" || $_POST['nachname'] == "" )</p><p> { </p><p> ob_start();</p><p> echo "Keinen Nachnamen eingegeben!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit;</p><p> }</p><p> else</p><p> if($_POST['email'] == "Ihre Email" || $_POST['email'] == "" )</p><p> {</p><p> ob_start();</p><p> echo "Keine Emailaddresse eingegeben!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit;</p><p> }</p><p> else</p><p> if($_POST['betreff'] == "Betreff" || $_POST['betreff'] == "" )</p><p> {</p><p> ob_start();</p><p> echo "Keinen Betreff eingegeben!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit;</p><p> }</p><p> else</p><p> if($_POST['nachricht'] == "Nachricht" || $_POST['nachricht'] == "" )</p><p> {</p><p> ob_start();</p><p> echo "Keine Nachricht eingegeben!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit;</p><p> }</p><p> if($_POST['id'] != "")</p><p> {</p><p> ob_start();</p><p> header("Refresh: 0; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit;</p><p> }</p><p> else</p><p> {</p><p> //setlocale(LC_TIME, "de_DE.utf8");</p><p> //error_reporting(0);</p><p> </p><p> </p><p> // $vorname = utf8_decode($_POST['vorname']);</p><p> // $nachname = utf8_decode($_POST['nachname']);</p><p> // $email = utf8_decode($_POST['email']);</p><p> // $betreff = utf8_decode($_POST['betreff']);</p><p> // $nachricht = utf8_decode($_POST['nachricht']);</p><p> </p><p> $vorname=EscapeStringForMail ($_POST['vorname'], 1);</p><p> $nachname=EscapeStringForMail ($_POST['nachname'], 1);</p><p> $email=EscapeStringForMail ($_POST['email'], 1);</p><p> $betreff=EscapeStringForMail ($_POST['betreff'], 1);</p><p> $nachricht=EscapeStringForMail ($_POST['nachricht'], 0);</p><p> </p><p> </p><p> </p><p> // $vorname = $_POST['vorname'];</p><p> // $nachname = $_POST['nachname'];</p><p> // $email = $_POST['email'];</p><p> // $betreff = $_POST['betreff'];</p><p> // $nachricht = $_POST['nachricht'];</p><p> </p><p> </p><p> $empfaenger = "test@web.de";</p><p> </p><p> $mail = new PHPMailer();</p><p> </p><p> // $vorname = "=?utf-8?b?".base64_encode($vorname)."?=";</p><p> // $nachname = "=?utf-8?b?".base64_encode($nachname)."?=";</p><p> // $email = "=?utf-8?b?".base64_encode($email)."?=";</p><p> // $betreff = "=?utf-8?b?".base64_encode($betreff)."?=";</p><p> </p><p> $mail->From = $email;</p><p> $mail->FromName = $vorname . " " . $nachname;</p><p> $mail->AddAddress($empfaenger);</p><p> </p><p> $mail->Subject = $betreff;</p><p> $mail->Body = $nachricht;</p><p> $mail->WordWrap = 30;</p><p> </p><p> if (!$mail->Send())</p><p> {</p><p> ob_start();</p><p> echo "Fehler beim Senden!<br>";</p><p> echo "Senden nicht erfolgreich.<br>";</p><p> echo "Sie werden in 5 Sekunden weitergeleitet.";</p><p> header("Refresh: 5; http://www.illutie.de/de/kontakt.php");</p><p> ob_end_flush();</p><p> exit; </p><p> }</p><p> else</p><p> {</p><p> header("Refresh: 0; http://www.illutie.de/de/erfolg.html");</p><p> exit;</p><p> } </p><p></p><p> }</p><p>}</p><p>?>[/PHP]</p><p></p><p>Man kann auskommentiert schon einige Sachen erkennen, die ich versucht hab... </p><p>Viele weitere sind gelöscht...</p><p></p><p>Die Escape-Funktion macht folgendes: </p><p></p><p>[PHP]function EscapeStringForMail ($string, $indicator=1)</p><p> {</p><p> if ($indicator!=0)</p><p> {</p><p> //UNZULAESSIGE ZEICHEN FILTERN</p><p> $string = preg_replace( "/[^a-zäüöß0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",$string );</p><p> };</p><p> </p><p> //E-MAIL-BEFEHLE FILTERN</p><p> $string = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$string );</p><p> </p><p> //UNNOETIGE LEERZEICHEN ENTFERNEN:</p><p> $string = trim($string);</p><p> </p><p> //PHP- UND HTML-CODE ENTFERNEN:</p><p> $string = strip_tags($string);</p><p> </p><p> //GEFILTERTEN STRING ZURUECKGEBEN </p><p> return $string;</p><p> }; [/PHP]</p><p></p><p>Hab in der php.ini eingetragen: </p><p></p><p>default_charset = "utf-8"</p><p>mbstring.internal_encoding=utf-8</p><p>mbstring.http_output=UTF-8</p><p>mbstring.encoding_translation=On</p><p>mbstring.func_overload=6</p><p></p><p>Das Formular hat ein accept-charset utf8, sowie die datei ein utf8 meta.</p></blockquote><p></p>
[QUOTE="Cortax, post: 2361114, member: 671210"] Guten Abend! Ich weiss, das Thema gibt es schon wie Sand am Meer aber ich krieg's einfach nicht hin... Hab ein Kontaktformular mit einem PHP-Skript, dass die php-mailer-class verwendet. Habe ein Problem mit Umlauten Bei dem Nachrichten-Feld gehen zwar alle Zeichen, beim Betreff geht aber das € - Zeichen nicht und von Emailaddresse (siehe rechts) über Vorname+Nachname wird's dann immer schlimmer... Hab schon 100 verschiedene Sachen ausprobiert, aber nichts hilft so dass es komplett funktioniert. Hier das Skript: [PHP]<?php require('../phpmailer/class.phpmailer.php'); //Anti-Injection-Skript einbinden include '../antiinjection.php'; $ngcvalidation = file_get_contents(str_replace(" ", "", "http://www.kostenloses-captcha.de/validation.php?ngid=".$_POST['ngidtransfer']."&secr=".$_POST['SecR']."&secb=".$_POST['SecB']."&secg=".$_POST['SecG']."")); //$ngcvalidation bekommt den String "true" zugewiesen, wenn die Sicherheitseingabe korrekt war //$ngcvalidation bekommt den String "false" zugewiesen, wenn die Sicherheitseingabe inkorrekt war if ($ngcvalidation == "false") { ob_start(); echo "Falsche Eingabe beim Sicherheitscode!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else { if (!IsSet ($_POST['vorname'],$_POST['nachname'],$_POST['email'],$_POST['betreff'],$_POST['nachricht']) || !is_string($_POST['vorname']) || !is_string($_POST['nachname']) || !is_string($_POST['email']) || !is_string($_POST['betreff']) || !is_string($_POST['nachricht'])) { ob_start(); echo "Falsche Eingabe!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } if($_POST['vorname'] == "Vorname" || $_POST['vorname'] == "" ) { ob_start(); echo "Keinen Vornamen eingegeben!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else if($_POST['nachname'] == "Nachname" || $_POST['nachname'] == "" ) { ob_start(); echo "Keinen Nachnamen eingegeben!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else if($_POST['email'] == "Ihre Email" || $_POST['email'] == "" ) { ob_start(); echo "Keine Emailaddresse eingegeben!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else if($_POST['betreff'] == "Betreff" || $_POST['betreff'] == "" ) { ob_start(); echo "Keinen Betreff eingegeben!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else if($_POST['nachricht'] == "Nachricht" || $_POST['nachricht'] == "" ) { ob_start(); echo "Keine Nachricht eingegeben!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } if($_POST['id'] != "") { ob_start(); header("Refresh: 0; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else { //setlocale(LC_TIME, "de_DE.utf8"); //error_reporting(0); // $vorname = utf8_decode($_POST['vorname']); // $nachname = utf8_decode($_POST['nachname']); // $email = utf8_decode($_POST['email']); // $betreff = utf8_decode($_POST['betreff']); // $nachricht = utf8_decode($_POST['nachricht']); $vorname=EscapeStringForMail ($_POST['vorname'], 1); $nachname=EscapeStringForMail ($_POST['nachname'], 1); $email=EscapeStringForMail ($_POST['email'], 1); $betreff=EscapeStringForMail ($_POST['betreff'], 1); $nachricht=EscapeStringForMail ($_POST['nachricht'], 0); // $vorname = $_POST['vorname']; // $nachname = $_POST['nachname']; // $email = $_POST['email']; // $betreff = $_POST['betreff']; // $nachricht = $_POST['nachricht']; $empfaenger = "test@web.de"; $mail = new PHPMailer(); // $vorname = "=?utf-8?b?".base64_encode($vorname)."?="; // $nachname = "=?utf-8?b?".base64_encode($nachname)."?="; // $email = "=?utf-8?b?".base64_encode($email)."?="; // $betreff = "=?utf-8?b?".base64_encode($betreff)."?="; $mail->From = $email; $mail->FromName = $vorname . " " . $nachname; $mail->AddAddress($empfaenger); $mail->Subject = $betreff; $mail->Body = $nachricht; $mail->WordWrap = 30; if (!$mail->Send()) { ob_start(); echo "Fehler beim Senden!<br>"; echo "Senden nicht erfolgreich.<br>"; echo "Sie werden in 5 Sekunden weitergeleitet."; header("Refresh: 5; http://www.illutie.de/de/kontakt.php"); ob_end_flush(); exit; } else { header("Refresh: 0; http://www.illutie.de/de/erfolg.html"); exit; } } } ?>[/PHP] Man kann auskommentiert schon einige Sachen erkennen, die ich versucht hab... Viele weitere sind gelöscht... Die Escape-Funktion macht folgendes: [PHP]function EscapeStringForMail ($string, $indicator=1) { if ($indicator!=0) { //UNZULAESSIGE ZEICHEN FILTERN $string = preg_replace( "/[^a-zäüöß0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "",$string ); }; //E-MAIL-BEFEHLE FILTERN $string = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",$string ); //UNNOETIGE LEERZEICHEN ENTFERNEN: $string = trim($string); //PHP- UND HTML-CODE ENTFERNEN: $string = strip_tags($string); //GEFILTERTEN STRING ZURUECKGEBEN return $string; }; [/PHP] Hab in der php.ini eingetragen: default_charset = "utf-8" mbstring.internal_encoding=utf-8 mbstring.http_output=UTF-8 mbstring.encoding_translation=On mbstring.func_overload=6 Das Formular hat ein accept-charset utf8, sowie die datei ein utf8 meta. [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 7, ▼ = 3, ◇ = 2 und die Summe von ▲ und ▼ durch ◇ geteilt wird, was ist das Ergebnis?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
PHPmailer und Umlaute
Oben