Hallo zu später Stunde,
ich betreue die Seite des Ferienland e.V. (Joomla) und habe, weil mich Joomla nervt, selbst Formulare erstellt, welche per php-mailer verschickt werden.
Nun habe ich leider das Problem, dass die Umlaute nicht korrekt dargestellt werden, was allerdings extremst wichtig ist.
Das Template selbst hat charset utf-8 und Umlaute werden auf der Seite korrekt dargestellt (Joomla wandelt die meines Wissens intern in html um).
Im Script habe ich bereits das charset auf utf-8 oder iso-8559-15/1 umgestellt, was allerdings auch keinen Erfolg brachte. Gibt es noch eine einfachere Lösung, als im Script mit str_replace zu arbeiten?
Danke für Vorschläge,
Jojo
PS: hier noch der Code vom Script, falls es hilft:
Code
<?
error_reporting(E_ALL);
session_start();
//var_dump($_SESSION);
//var_dump($_POST);
include"fcts.php";
if (isset($_POST['senden'])) {
if($_SESSION['nospam'] != $_POST['erg']) {
echo '<p style="color: red;">Der Sicherheitscode wurde falsch eingegeben.</p>';
include "formular.php";
}
else {
if (empty($_POST['vname']) OR empty($_POST['nname']) OR empty($_POST['adress']) OR empty($_POST['kids'])) {
echo'<p style="color:red;">Bitte füllen sie alle Pflichtfelder aus.</p>';
include "formular.php";
}
else {
if (!check_email($_POST['mail'])) {
echo'<p style="color:red;">Geben sie bitte eine gültige E-Mail Adresse an.</p>';
include "formular.php";
}
//all checks passed
else {
$email = htmlentities($_POST['mail']);
$vname = htmlentities($_POST['vname']);
$nname = htmlentities($_POST['nname']);
$kids = explode(",", $_POST['kids']);
$list = htmlentities($_POST['werbung']);
$adresse = nl2br(htmlentities($_POST['adress']));
$msg = '
Name: '.$vname.'</p>
Nachname: '.$nname.'</p>
'.$adresse.'</p>
Angemeldete Kinder: </p><ul>';
foreach ($kids as $kid) {
$msg .= '[*]'.$kid.'';
}
$msg .= '[/list]';
$msg .= '
Von Ferienland erfahren durch: [b]'.$list.'[/b]';
require('class.phpmailer.php');
require('class.smtp.php');
$mailer = new PHPMailer();
$mailer->isHTML(true);
$mailer->From = ''.$email.'';
$from = ''.$vname.' '.$nname.'';
$mailer->FromName = ''.$from.'';
$mailer->AddAddress("--entfernt--", "Jojo");
$mailer->WordWrap = 50;
$mailer->Subject = "Anmeldung";
$mailer->Body = ''.$msg.'';
$mailer->CharSet = "iso-8859-15";
$time = time();
if (isset($_SESSION['time15']) AND $time<=$_SESSION['time15']) {
$time = time();
$wait = $_SESSION['time15']-$time;
$wait = date('i', $wait);
echo"
Es ist nicht erlaubt, kurz hintereinander Anmeldungen zu verschicken (Spamschutz).</p>";
echo"
Bitte warten sie noch ".$wait." Minuten.</p>";
}
else {
if(!$mailer->Send()) {
echo "Es is leider ein Fehler aufgetreten. Probieren sie es bitte noch einmal. Sollte der Fehler weiterhin bestehen, kontaktieren sie bitte den Administrator.
";
echo "Mailer Error: " . $mailer->ErrorInfo;
exit;
}
else {
echo"Vielen Dank für ihre Anmeldung.";
$time = time();
$time15 = $time+(15*60);
$_SESSION['time15'] = $time15;
}
}
} //[end]all checks passed
}
}
}
else {
$erg = create_captcha();
unset($_SESSION['nospam']);
$_SESSION['nospam'] = $erg;
echo'
<h1>Anmeldung zum Srbska-Sommercamp 2008</h1>
Hier können sie ihr(e) Kind(er) zum Sommercamp anmelden. Nach der Anmeldung bekommen sie einen Vertrag (wahlweise per Post oder Email zum selbstausdrucken) zugeschickt, welchen sie bitte ausgefüllt und unterschrieben an Ferienland e.V.
zurücksenden.</p>
<span style="color:red;">Hinweis, bitte Lesen: </span>Um Spam zu vermeiden, wurden 2 Maßnahmen getroffen.
Zum einem müssen sie unten im Anmeldeformular eine kleine "Rechenaufgabe" lösen.
Sollten sie diese nicht sehen können, aktivieren sie bitte die Anzeige von Bildern in ihrem Browser
und laden sie die Seite neu. Wenn sie das Bild aus anderen Gründen nicht sehen können,
kontaktieren sie bitte den Administrator der Seite unter
--entfernt--<span style="display:none;">--diesen Text bitte entfernen--</span>@gmx.de.</p>
Ebenso ist es nicht möglich, kurz hintereinander mehrere Anmeldungen zu verschicken. Kontrollieren sie deshalb ihre Angaben
bitte genau, um nicht unnötig warten zu müssen. Wenn sie mehrere Kinder anmelden möchten, tragen sie mehrere
Namen im Formular ein.</p>
Die Option, den Vertrag per Mail zu erhalten, folgt bis Donnerstag, den 28.2.2008. Wir bitten um etwas Geduld.</p>
Danke für ihre Aufmerksamkeit.</p>
<p style="color: #7B6F79; font-weight: bold;">Anmeldeforumlar</p>
<form id="anmeldung" action="index.php?option=com_content&task=view&id=25&Itemid=45" method="post">
<table style="width: 450px;" cellspacing="30">
<tr>
<td>
Ihr Vorname:<span style="color: red;">*</span></p>
</td>
<td><input type="text" name="vname" /></td>
</tr>
<tr>
<td>
Ihr Nachname:<span style="color: red;">*</span></p>
</td>
<td>
<input type="text" name="nname" />
</td>
</tr>
<tr>
<td>
Ihre Anschrift <span style="font-size: 10px; color: #B9B9B9;">(bitte in Briefüblicher Form angeben)</span>:<span style="color: red;">*</span></p>
</td>
<td><textarea cols="21" rows="5" name="adress"></textarea>
</td>
<tr>
<td>
Vollständiger Name des Kindes <span style="font-size: 10px; color: #B9B9B9;">(bei mehreren Kindern bitte durch Komma trennen)</span>:<span style="color: red;">*</span> </p></td>
<td><textarea name="kids" cols="21" rows="5" /></textarea></td>
</tr>
</tr>
<tr>
<td>
Ihre E-Mail Adresse:<span style="color: red;">*</span></p></td>
<td><input type="text" name="mail" /></td>
</tr>
<tr>
<td>
Wie sind sie auf Ferienland aufmerksam geworden?</p></td>
<td><select name="werbung">
<option>Flyer</option>
<option>Internetseite</option>
<option>Freunde/Bekannte</option>
<option>Zeitungsartikel</option>
<option>Sonstiges</option>
</select></td>
</tr>
<tr>
<td>
Bitte rechnen: [img]./anmelden/img/captcha.gif[/img] = </p></td>
<td><input type="text" name="erg" /></td>
</tr>
<tr>
<td><input type="submit" value="Abschicken" name="senden" />
</td>
</tr>
</table>
</form>
';
}
?>
Alles anzeigen