Hallo Leute,
nach stunden langem googlen und dennoch nicht weiter kommen musste ich jetzt einen Thread eröffnen.. Wie der Name schon sagt habe ich ein Problem mit Umlauten in meinem Php Kontaktforumlar. Es geht um ein Formular für eine T-Shirt Bestellung, welches ich auf einem simplen vorgefertigten Kontaktformular Script aufgebaut habe. Habe bereits alles auf UTF-8 umgestellt aber die emails die mit meinem Formular versendet werden weisen immernoch verkehrte umlaute auf so wird z.b. ein ä als ä ausgegeben.. bekanntes Problem halt. Ich dachte erst es wäre ein Server Problem und ich habe das script mal auf einem anderen Webspace getestet und plötzlich wurden die Umlaute normal angezeigt. Doch nachdem ich das Formular weiter ausgebaut habe wurden die Umlaute wieder falsch rausgeschickt in der email. Ich konnte jedoch bis auf Text Inhalt in meinem Template keine veränderung feststelle.. Ich bin echt am verzweifeln und komme nicht weiter.. so wenn ihr nach dieser langen Beschreibung immernoch weiterlest hoffe ich das Ihr mir mit meinem Problem helfen möchtet oder könnt daher poste ich jetz mal die wichtigen codes.
#1 das html template das die umlaute noch korrekt ausgegeben hat und dies auch immernoch tut
Code:
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style><form action="ueberweisung.php" method="POST">
<table width="100%">
<tr>
<td>Vorname</td>
<td><input type="text" name="vorname" value="{v_vorname}"></td>
</tr>
<tr>
<td>Nachname</td>
<td><input type="text" name="nachname" value="{v_nachname}"></td>
</tr>
<tr>
<td>Email Adresse</td>
<td><input type="text" name="email" value="{v_email}" /></td>
</tr>
<tr>
<td>Straße</td>
<td><input type="text" name="street" value="{v_street}" /></td>
</tr>
<tr>
<td>Postleitzahl</td>
<td><input type="text" name="plz" value="{v_plz}" /></td>
</tr>
<tr>
<td>Ort</td>
<td><input type="text" name="ort" value="{v_ort}" /></td>
</tr>
<td>Telefonnummer</td>
<td><input type="text" name="telefon" value="{v_telefon}" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="{submit}"></td>
</tr>
</table>
</form>
#2 das template das nicht mehr korrekt ausgibt:
nicht über das tabellen wirr warr wundern ich dachte wenn alles eine zusammenhängende tabelle ist funktioniert es vl. wieder
Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
<!--
body,td,th {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #FFFFFF;
}
-->
</style><form accept-charset="utf-8" action="ueberweisung.php" method="POST">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>Gewünschte Zahlungsmethode: Überweisung</strong></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Schritt 2: Dateneingabe und Artikelauswahl</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><table width="26%">
<tr>
<td width="49%">Vorname</td>
<td width="51%"><input type="text" name="vorname" value="{v_vorname}" /></td>
</tr>
<tr>
<td>Nachname</td>
<td><input type="text" name="nachname" value="{v_nachname}" /></td>
</tr>
<tr>
<td>Email Adresse</td>
<td><input type="text" name="email" value="{v_email}" /></td>
</tr>
<tr>
<td>Straße</td>
<td><input type="text" name="street" value="{v_street}" /></td>
</tr>
<tr>
<td>Postleitzahl</td>
<td><input type="text" name="plz" value="{v_plz}" /></td>
</tr>
<tr>
<td>Ort</td>
<td><input type="text" name="ort" value="{v_ort}" /></td>
</tr>
<tr>
<td>Telefonnummer</td>
<td><input type="text" name="telefon" value="{v_telefon}" /></td>
</tr>
</table></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>Artikelauswahl:</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><table width="50%">
<tr>
<td width="11%"><input type="text" name="m" value="{v_m}" /></td>
<td width="89%"><font size="2" face="Arial, Trebuchet MS, Geneva, Helvetica, SunSans-Regular, sans-serif">Stück T-Shirt Größe M wie abgebildet zzgl. Versandkosten</font></td>
</tr>
<tr>
<td><input type="text" name="l" value="{v_l}" /></td>
<td><font size="2" face="Arial, Trebuchet MS, Geneva, Helvetica, SunSans-Regular, sans-serif">Stück T-Shirt Größe L wie abgebildet zzgl. Versandkosten</font></td>
</tr>
<tr>
<td><input type="text" name="xl" value="{v_xl}" /></td>
<td><font size="2" face="Arial, Trebuchet MS, Geneva, Helvetica, SunSans-Regular, sans-serif">Stück T-Shirt Größe XL wie abgebildet zzgl. Versandkosten</font></td>
</tr>
</table></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><input type="submit" name="submit" value="{submit}" /></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
</form>
<p> </p>
<p> </p>
#3 ist meine ueberweisung.php
Code:
<?
header('Content-type: text/html; charset=utf-8');
error_reporting(0);
include("header.php");
include("config.php");
$a='';
function check_email($email)
{
return (eregi('^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-.]?[0-9a-zA-Z])*\\.[a-zA-Z]{2,4}$',$email)==false ? false : true);
}
$content=file_get_contents("template.html");
$show_form=true;
if(isset($_POST['submit']))
{
$v_vorname=$_POST['vorname'];
$v_nachname=$_POST['nachname'];
$v_email=$_POST['email'];
$v_street=$_POST['street'];
$v_plz=$_POST['plz'];
$v_ort=$_POST['ort'];
$v_a=$_POST['a'];
$v_m=$_POST['m'];
$v_l=$_POST['l'];
$v_xl=$_POST['xl'];
$v_telefon=$_POST['telefon'];
$v_email = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $v_email );
$v_email = preg_replace( "/(content-type:|bcc:|cc:|to:|from:-)/im", "", $v_email);
if(empty($v_vorname))echo "<font style=\"color:red\">".$errors['vorname']."</font><br>";
elseif(empty($v_nachname))echo "<font style=\"color:red\">".$errors['nachname']."</font><br>";
elseif(empty($v_email)||!check_email($v_email))echo "<font style=\"color:red\">".$errors['email']."</font><br>";
elseif(empty($v_street))echo "<font style=\"color:red\">".$errors['street']."</font><br>";
elseif(empty($v_plz))echo "<font style=\"color:red\">".$errors['plz']."</font><br>";
elseif(empty($v_ort))echo "<font style=\"color:red\">".$errors['ort']."</font><br>";
else
{
$show_form=false;
$data=array();
$data['ip'] = $_SERVER['REMOTE_ADDR'];
$data['host'] = gethostbyaddr($data['ip']);
$data['browser'] = $_SERVER['HTTP_USER_AGENT'];
$data['ref'] = $_SERVER['REQUEST_URI'];
$data['ref2'] = $_SERVER['HTTP_REFERER'];
$email_admin=file_get_contents("email_admin.txt");
$email_kunde=file_get_contents("email_kunde.txt");
foreach($txt as $n=>$w)
{
$email_admin=str_replace("{v_".$n."}",${"v_$n"},$email_admin);
$email_kunde=str_replace("{v_".$n."}",${"v_$n"},$email_kunde);
}
foreach($data as $n=>$w)
{
$email_admin=str_replace("{".$n."}",$w,$email_admin);
$email_kunde=str_replace("{".$n."}",$w,$email_kunde);
}
$header = "";
$header .= "Content-Transfer-Encoding: 7bit\r\n";
$header .= "FROM: ".$mail_data['name_absender']."<".$mail_data['email_absender'].">\r\n";
$header .= "Reply-To: ".$mail_data['name_absender']."<".$mail_data['email_absender'].">\r\n";
$header .= "X-Mailer: PHP/" . phpversion()."\r\n";
$sent_kunde=mail($v_email, $mail_data['betreff_kunde'], $email_kunde, $header);
$header = "";
$header .= "Content-Transfer-Encoding: 7bit\r\n";
$header .= "FROM: ".$v_email."\r\n";
$header .= "X-Mailer: PHP/" . phpversion()."\r\n";
$sent_admin=mail($mail_data['email_admin'], $mail_data['betreff_admin'], $email_admin, $header);
if($sent_admin&&$sent_kunde) {
echo '<br /><br />Vielen Dank,
Ihre Anfrage wurde erfolgreich an uns weitergeleitet.';
} else
{
echo "<font style=\"color:red\">".$errors['nachricht_senden']."</font><br>";
$show_form=true;
}
}
}
else
{
$v_vorname="";
$v_nachname="";
$v_email="";
$v_street="";
$v_plz="";
$v_ort="";
$v_a="";
$v_m="";
$v_l="";
$v_xl="";
$v_telefon="";
$v_nachricht="";
}
if($show_form)
{
foreach($txt as $n=>$w)
{
$content=str_replace("{".$n."}",$w,$content);
$content=str_replace("{v_".$n."}",${"v_$n"},$content);
}
$content=str_replace("{submit}",$txt2['submit'],$content);
echo $content.$a;
}
?>
#4 die config.php
Code:
<?
header('Content-type: text/html; charset=utf-8');
$txt=array();
#Texte vor den Eingabefeldern
$txt['vorname']="Vorname";
$txt['nachname']="Nachname";
$txt['street']="Straße und Hausnummer";
$txt['plz']="Postleitzahl";
$txt['ort']="Ort";
$txt['telefon']="Telefonnummer";
$txt['email']="E-Mail";
$txt['m']="M";
$txt['l']="L";
$txt['xl']="XL";
$txt2=array();
$txt2['submit']="Bestellen";
//Ausgabe, falls die E-Mails erfolgreich versendet wurden.
$txt2['erfolg']="Vielen Dank für Ihre Nachricht. Wir werden uns umgehend mit Ihnen in Verbindung setzen.";
$errors=array();
#Ausgaben, falls die jeweiligen Felder keinen Inhalte hatten, also leer waren
$errors['vorname']="Bitte geben Sie den Vornamen ein.";
$errors['nachname']="Bitte geben Sie den Nachnamen ein.";
$errors['street']="Bitte geben Sie die Straße ein.";
$errors['plz']="Bitte geben Sie Ihre Postleitzahl ein.";
$errors['ort']="Bitte geben Sie Ihren Ort ein.";
$errors['email']="Bitte geben Sie die E-Mail ein.";
$errors['nachricht']="Bitte geben Sie eine Nachricht ein.";
//Ausgabe, falls die E-Mails nicht versendet werden konnten.
$errors['nachricht_senden']="Nachricht konnte nicht versendet werden.";
$mail_data=array();
//An diese Adresse wird dem Admin seine Email geschickt
$mail_data['email_admin']="meine email";
//Diese Adresse wird als Absender angegeben
$mail_data['email_absender']="noreply@meineseite.de";
//Dieser Name wird als Absender angegeben
$mail_data['name_absender']="T-Shirt Bestellung";
//Betreff der E-Mail an den Admin
$mail_data['betreff_admin']="T-Shirt Bestellung per Überweisung";
//Betreff der E-Mail an den Kunden
$mail_data['betreff_kunde']="Ihre Bestellung auf meineseite.de";
?>
dazu gibt es noch die header.php und footer.php die in diesem falle aber glaube ich nicht ausschlaggebend sind
ich poste sie trotzdem mal
header.php
Code:
<?
header('Content-type: text/html; charset=utf-8');
if (eregi("header.php",$_SERVER["PHP_SELF"])) {
header('Location: ./ueberweisung.php');
die();
}
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Deutschland - England | Hilfe</title>
</head>
<body>
footer.php
Code:
<?
if (eregi("header.php",$_SERVER["PHP_SELF"])) {
header('Location: ./ueberweisung.php');
die();
}
?>
</body>
</html>
Ich hoffe das mir jemand mit meinem Problem weiter helfen kann.. bin echt mit meinem Latein am Ende..! Ich danke schonaml im Vorraus..!