zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Formmailer stellt Umlaute falsch dar

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 26.02.2012, 11:05
Benutzerbild von hubspe
Eisen 7 ole....
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 22.06.2007
Ort: Passau
Beiträge: 7.086
hubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblick
Standard Formmailer stellt Umlaute falsch dar

Moin zusammen,

es geht um diesen Mailer:
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="robots" content="noindex, nofollow" />
  <title>Mailer</title>
<link type="text/css" rel="stylesheet" href="css/bildschirm.css" media="screen" />
</head>
<body id="startseite">
<div id="umhang">
<h2>Feedbackformular</h2>
<?php
        
if (isset($_POST['submit']))  {
                
$fehler false;
                
$fehlertext "";
                if (empty(
$_POST['Name']))  {
                        
$fehler true;
                        
$fehlertext .= "Der Name fehlt!<br />\n";
                }
                elseif (
strlen($_POST['Name']) < 3) {
                    
$fehler true;
                    
$fehlertext .= "Der Name ist zu kurz!<br>\n";
                }
                
$muster "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,6}$/";
                if (empty(
$_POST['Email'])) {
                        
$fehler true;
                        
$fehlertext .= "Die E-Mail-Adresse fehlt!<br>\n";
                } elseif (
preg_match($muster$_POST['Email']) == 0) {
                         
$fehler true;
                         
$fehlertext .= "Die E-Mail-Adresse ist ungültig!<br>\n";
                }
                if (empty(
$_POST['botschaft']))  {
                        
$fehler true;
                        
$fehlertext .= "Das Kommentarfeld muss ausgefüllt werden!<br />\n";
                }
                elseif (
strlen($_POST['Name']) < 3) {
                        
$fehler true;
                        
$fehlertext .= "Der Kommentar ist zu kurz!<br>\n";
                }
                        if (
$fehler)  {
                                echo 
"<p>$fehlertext</p>";
                        }
                        else  {
            
$mailbody $_POST['Name'] . " Telefon: " $_POST['telefon'] . " schrieb\n\n";
                        
$mailbody .= $_POST['botschaft'];
            
$mailbody stripslashes($mailbody);
            
$Email $_POST['Email'];
                if (@
mail("test@hubspe.net" "Feedback" $mailbody "From: $Email"))  {
                    echo 
"<p>Die Botschaft wurde weitergeleitet!</p>\n";
                }
                else  {
                    echo 
"<p>Leider gab es einen falschen Fehler</p>\n";
                }
                                }
      }
?>
<form action="index.php" method="post">
    <label for="Name">Name:</label>
    <input type="text" name="Name" value="<?php
                                                
if (isset($_POST['Name']) && $fehler)  {
                                                 echo 
htmlspecialchars(stripslashes($_POST['Name']));
                                                }
                                              
?>" /><br />
    <label for="Email">E-Mail-Adresse:</label>
    <input type="text" name="Email"  value="<?php
                                                
if (isset($_POST['Email']) && $fehler)  {
                                                 echo 
htmlspecialchars(stripslashes($_POST['Email']));
                                                }
                                              
?>" /><br />
        <label for="Email">Telefon:</label>
    <input type="text" name="telefon" /><br />
    <label for="botschaft">Botschaft:</label><br />
    <textarea name="botschaft" cols="50" rows="5"><?php
                                                      
if (isset($_POST['botschaft']) && $fehler)  {
                                                            echo 
htmlspecialchars(stripslashes($_POST['botschaft']));
                                                       }
                                                      
?></textarea><br />
    <input type="submit" value="Absenden!" name="submit" />
</form>
</div><!-- Ende #umhang -->
</body>
</html>
Leider werden die Umlaute durch kryptische Zeichen dargestellt.
Hier hab ich das mal zum Ausprobieren hochgeladen.

Was ist da falsch? Habt ihr eine Idee

Das zweite Problem ist das der Mailer keinen Schutz gegen Flooding hat, aber ich wäre erst mal froh, wenn ich das mit den Umlauten bereinigen könnte.

Grundlage des Formmailers ist das Buch PHP für Kids von Johann Christian Hanke
__________________
Ein mehrfacher Gruß aus dem Südosten
Klaus
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 26.02.2012, 11:41
body.ie {display: grotte}
XHTMLforum-Mitglied
 
Registriert seit: 09.01.2011
Beiträge: 841
take_a_7 sorgt für eine eindrucksvolle Atmosphäretake_a_7 sorgt für eine eindrucksvolle Atmosphäre
Standard

Moin,

deine Mail braucht natürlich noch einen header, wie eine HTTP-Resource auch, die dem Client sagt, dass die Mail UTF-8 codiert ist. Das geht über den Parameter $additional_headers.

Ganz abgesehen davon ist deine Prüfung, ob die Mail-Adresse sinnvoll ist, nicht besonders gut. Siehe dafür hier und die dort verlinkte Forumsdiskussion.

Ich hab meine Formmailer früher auch immer ganz simpel mit mail() gemacht. Aber es ist einfach so: Warum immer das Rad neu erfinden? Nimm den Swiftmailer und voilà

gruß,
take
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 26.02.2012, 12:13
Benutzerbild von hubspe
Eisen 7 ole....
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 22.06.2007
Ort: Passau
Beiträge: 7.086
hubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblick
Standard

danke für deine Hilfe!

Zitat:
Zitat von take_a_7 Beitrag anzeigen
Aber es ist einfach so: Warum immer das Rad neu erfinden? Nimm den Swiftmailer und voilà
Das ist ja mal ne Idee! Werd ich mir anschauen!
__________________
Ein mehrfacher Gruß aus dem Südosten
Klaus
Mit Zitat antworten
  #4 (permalink)  
Alt 26.02.2012, 12:45
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Du kannst auch einfach den PHPMailer (oben auf "Download" -> "PHPMailer for PHP5/6" klicken) nehmen. Einfach und schnell aufgebaut. Ist wahrscheinlich so wie der Swiftmailer, den kenne ich aber nicht. Die mail()-Funktion nutze ich schon länger nicht mehr. Zu unsicher
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #5 (permalink)  
Alt 26.02.2012, 16:31
Benutzerbild von hubspe
Eisen 7 ole....
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 22.06.2007
Ort: Passau
Beiträge: 7.086
hubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblickhubspe ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen
Du kannst auch einfach den PHPMailer (oben auf "Download" -> "PHPMailer for PHP5/6" klicken) nehmen. Einfach und schnell aufgebaut. Ist wahrscheinlich so wie der Swiftmailer, den kenne ich aber nicht. Die mail()-Funktion nutze ich schon länger nicht mehr. Zu unsicher
auch dir vielen Dank für deine Hilfe.

Den schau ich mir auch mal an.
__________________
Ein mehrfacher Gruß aus dem Südosten
Klaus
Mit Zitat antworten
  #6 (permalink)  
Alt 27.02.2012, 15:48
Benutzerbild von sys_op
Neuer Benutzer
neuer user
 
Registriert seit: 27.02.2012
Ort: Wien
Beiträge: 5
sys_op befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen
....Die mail()-Funktion nutze ich schon länger nicht mehr. Zu unsicher
Nun, PHPMailer nutzt voreingestellt genau diese Funktion (also mail() ).
Aber es stimmt schon, sich um sowas wie header oder Codierung gedanken zu machen ist durch solche Klassen schlicht unnötig geworden.
Mit Zitat antworten
  #7 (permalink)  
Alt 27.02.2012, 16:31
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

Zitat:
Zitat von sys_op Beitrag anzeigen
Nun, PHPMailer nutzt voreingestellt genau diese Funktion (also mail() ).
Stimmt. Aber wenn ich die mail()-Funktion nutzen wollen würde, bräuchte ich den PHPMailer nicht einbinden. Das ist dann wirklich zu aufwendig.

Also, für das Protokol: Man muss der Klasse anweisen, wie die Mails versendet werden sollen. Das geht entweder über die Funktion mail(), über SMTP oder über sendmail. Es gibt in dem Archiv der Klasse Beispiele, die das erklären. Einfach anschauen
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade!
Mit Zitat antworten
  #8 (permalink)  
Alt 27.02.2012, 17:05
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 414
Maxefix ist ein sehr geschätzer MenschMaxefix ist ein sehr geschätzer MenschMaxefix ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen
Stimmt. Aber wenn ich die mail()-Funktion nutzen wollen würde, bräuchte ich den PHPMailer nicht einbinden. Das ist dann wirklich zu aufwendig.
Wobei man dazu sagen muss, dass mail() nicht per se unsicher ist! Nur viele Implementierungen sind es. Und genau da setzt der phpMailer (und Konsorten) an. Die Klassen sind ausgereift und sicher (zumindestens sollten sie das sein). Man muss also nicht selbst das Rad neu erfinden, wobei sich sehr oft Fehler und Sicherheitslücken einschleichen.

Darum ist es immer ratsam, z.B. den phpMailer zu verwenden, auch wenn er intern nur mail() verwendet (was für die meisten Zwecke übrigens völlig OK ist).

Gruß,
Max
Mit Zitat antworten
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
charset=iso-8859-1 Umlaute falsch dargestellt develo (X)HTML 2 29.07.2010 16:08
Umlaute werden falsch dargestellt Xethon (X)HTML 5 21.02.2010 14:51
Opera stellt Seite falsch dar Rezneuk CSS 3 16.03.2009 23:18
IE stellt div container falsch dar . Wurmpastete CSS 2 22.02.2007 09:55
Zellenhöhe / IE stellt Zelle falsch dar digganet CSS 5 26.05.2005 14:13


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:06 Uhr.