mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 27.04.2024 07:00 Benutzername: Passwort: Auto-Login

Thema: Umlaute im Kontakformular vom 08.04.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Umlaute im Kontakformular
Autor Nachricht
David_Odenthal
Threadersteller

Dabei seit: 09.02.2005
Ort: umgezogen
Alter: 40
Geschlecht: Männlich
Verfasst Di 08.04.2008 19:45
Titel

Umlaute im Kontakformular

Antworten mit Zitat Zum Seitenanfang

Hallo Leute,

ich finde die Lösung des Problems nicht. Im Kontaktformular bzw. in der Email durch das Kontaktformular spuckt der PC die Umlaute ständig falsch aus. UTF-8 habe ich angewendet, sowie ISo Werte....

Hier der COde..

kontaktformular-auswerten.php:
Zitat:

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<?php

$Empfaenger = "xxxxxx";

if($_REQUEST['Send'])
{
if(empty($_REQUEST['Name']) || empty($_REQUEST['Vorname']) || empty($_REQUEST['Strasse']) || empty($_REQUEST['Email']) || empty($_REQUEST['Ort']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";
}
else
{
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="Send")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailnachricht .= "\nDatum/Zeit: ";
$Mailnachricht .= date("d.m.Y H:i:s");
$Mailbetreff = "Internetanfrage des Heilzentrum Maria Böhm";
$Mailbetreff .= $_REQUEST['Betreff'];
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
echo"Vielen Dank für Ihre eMail!";
}
}
else
{
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href=\"kontaktformular.php\">Seite</a>.";
}

?>


Wie sollte der Code richtig aussehen, sodass dieser mit den richtigen Umlauten per Mail ankommt?


Zuletzt bearbeitet von David_Odenthal am Di 08.04.2008 19:46, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mi 09.04.2008 00:33
Titel

Antworten mit Zitat Zum Seitenanfang

Ja, ich sehe den Metatag dort, wo du das Charset angibst.
Aber dieser Tag muß im Head einer HTML-Datei stehen, was hier nicht der Fall ist. Dein Script erzeugt keine korrekte HTML-Seite.
Außerdem muß du die Datei mit deinem Editor auch mit der gleichen Kodierung wie der angegebenen speichern.
Der Client (Browser) reagiert auf diesem Metatag dann so, als hätte er den entsprechenden HTTP-Header vom Server empfangen. Dementsprechend sollte er die Umlaute/Sonderzeichen dann auch korrekt darstellen.

Das hat aber dann noch nichts mit der Darstellung in der Email zu tun. Dafür ist ein anderer Client (Mailprogramm) zuständig.
Der Mailclient liest der Header der Email aus.
Du kannst der Funktion mail() als optionalen Parameter noch zusätzliche Header übergeben. Hier solltest du angeben, welche Zeichenkodierung genutzt wird. Das hast du hier völlig außer acht gelassen.
Wie du das genau machst, findest du in den Beispielen der Funktion mail() im PHP-Handbuch.
(oder du benutzt die Suchfunktion dieses Boards hier. Das habe ich nämlich auch schon zig-mal beschrieben.)

Weiterhin ist das Script anfällig für einen Angriff per Email-Header-Injection. Dazu habe ich auch oft genug was geschrieben.
Statt $_REQUEST solltest du in diesem Fall $_POST nutzen. (So wird dein Formular doch verschickt, oder?)
Und dann müssen alle Daten, die von außen in deine Funktionen übernommen werden, in jedem Fall abgesichert werden. Ansonsten kann man aus deinem Mailformular ganz schnell eine Spamschleuder machen.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
David_Odenthal
Threadersteller

Dabei seit: 09.02.2005
Ort: umgezogen
Alter: 40
Geschlecht: Männlich
Verfasst Mo 26.05.2008 14:10
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Ja, ich sehe den Metatag dort, wo du das Charset angibst.
Aber dieser Tag muß im Head einer HTML-Datei stehen, was hier nicht der Fall ist. Dein Script erzeugt keine korrekte HTML-Seite.
Außerdem muß du die Datei mit deinem Editor auch mit der gleichen Kodierung wie der angegebenen speichern.
Der Client (Browser) reagiert auf diesem Metatag dann so, als hätte er den entsprechenden HTTP-Header vom Server empfangen. Dementsprechend sollte er die Umlaute/Sonderzeichen dann auch korrekt darstellen.

Das hat aber dann noch nichts mit der Darstellung in der Email zu tun. Dafür ist ein anderer Client (Mailprogramm) zuständig.
Der Mailclient liest der Header der Email aus.
Du kannst der Funktion mail() als optionalen Parameter noch zusätzliche Header übergeben. Hier solltest du angeben, welche Zeichenkodierung genutzt wird. Das hast du hier völlig außer acht gelassen.
Wie du das genau machst, findest du in den Beispielen der Funktion mail() im PHP-Handbuch.
(oder du benutzt die Suchfunktion dieses Boards hier. Das habe ich nämlich auch schon zig-mal beschrieben.)

Weiterhin ist das Script anfällig für einen Angriff per Email-Header-Injection. Dazu habe ich auch oft genug was geschrieben.
Statt $_REQUEST solltest du in diesem Fall $_POST nutzen. (So wird dein Formular doch verschickt, oder?)
Und dann müssen alle Daten, die von außen in deine Funktionen übernommen werden, in jedem Fall abgesichert werden. Ansonsten kann man aus deinem Mailformular ganz schnell eine Spamschleuder machen.



Hallo und ersteinmal danke dafür. Ich habe natürlich vergessen zu erwähnen, dass ich es in ausschnitte dargestellt habe, und somit natürlich auch hier die Interpretation falsch ist Lächel. Nichts desto trotz habe ich mal nachgeschaut, ob ich es nicht wirklich falsh eingebaut hatte. Es ist seit der Threaderstellung ja schon einige Zeit verstrichen.

Das ganze sieht korrekterweise so aus (kontaktformular.php):
Zitat:


<head>

<link REL="SHORTCUT ICON" HREF="favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="language" content="deutsch, de" />
<meta name="language" content="deutsch, de" />
<meta name="keywords" content="" />

<meta name="author" content="David Odenthal" />

<meta name="distribution" content="global" />
<meta name="page-topic" content="Medien" />

<meta name="revisit-after" content="7 days" />
<meta name="language" content="de" />
<link rel="stylesheet" type="text/css" href="css/basic.css" />
</head>


und im body tag so:

Zitat:

<div id="content">
<h1>Hier ist Ihr Kontaktformular!</h1>
<form action="kontaktformular-auswerten.php" method="post">
<form enctype="multipart/form-data" accept-charset="ISO-8859-1">
<table border="0" cellpadding="2" cellspacing="4">
bla
bla
bla


Die kontaktformular-auswerten.php beginnt im Header mit dem gleichen Teil wie oben dargestellt, im body-tag sieht es dann so aus:

Zitat:
<?php

$Empfaenger = "xxxx@xxx.de";

if($_REQUEST['Send'])
{
if(empty($_REQUEST['Name']) || empty($_REQUEST['Vorname']) || empty($_REQUEST['Strasse']) || empty($_REQUEST['Email']) || empty($_REQUEST['Ort']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";
}
else
{
bla
bla
bla


Vielleicht liegt es auch an den serverseitigen Einstellungen?

Grüße,
D


Zuletzt bearbeitet von David_Odenthal am Mo 26.05.2008 14:17, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen PHP Umlaute
html umlaute
Mailformular Umlaute
[XML + Flash] Umlaute ...
Umlaute umwandeln
PHP Kontaktformular und Umlaute
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.