Ankündigung

Einklappen
Keine Ankündigung bisher.

Kontaktformular - Umlaute werden nicht richtig dargestellt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kontaktformular - Umlaute werden nicht richtig dargestellt



    Hallo ihr Lieben,

    ich habe schon im Internet nach Antworten gesucht, aber wirklich weiter bringt es mich leider nicht.

    Ich war bereits auf folgenden Link: https://php-de.github.io/jumpto/utf-8/#konsequent-utf-8 und auch anderen, aber ich kenne mich nicht aus.

    Und zwar habe ich folgende PHP-Datei:



    PHP-Code:

    <?php

        $submited 
    false;
        
    $error false;

        if(
    $_POST && $_POST['form']) {
            if(
    $_POST['username'] != '' || $_POST['name'] == '' || $_POST['telefon'] == ''|| $_POST['email'] == '' || $_POST['text'] == '') {
                
    $error true;
            } else {
                
    $name htmlspecialchars($_POST['name']);
                
    $telefon htmlspecialchars($_POST['telefon']);
                
    $email htmlspecialchars($_POST['email']);
                
    $text htmlspecialchars($_POST['text']);

                
    $ziel "info@xxxx";
                
    $betreff "Webseiten Kontaktformular";

                
    $submited true;

                
    $headers "From: " $email "\r\n";
                
    $headers .= "MIME-Version: 1.0\r\n";

                
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";


                
    $message '<html><body>';

                
    $message .= '<strong>Ansprechpartner:</strong><br>';
                
    $message .= $name '<br><br>';

                
    $message .= '<strong>Telefonnr.:</strong><br>';
                
    $message .= $telefon '<br><br>';

                
    $message .= '<strong>E-Mail:</strong><br>';
                
    $message .= $email '<br><br>';

                
    $message .= '<strong>Nachricht:</strong><br>';
                
    $message .= $text '<br><br>';


                
    $message .= '</body></html>';

                
    mail($ziel$betreff$message$headers);
            }
        }

    ?>
    <!doctype html>
    <html>
        <head>

    <meta charset="utf-8">

            <style>

                * {
                    font-family: "Verdana", "arial",sans-serif;
                    box-sizing: border-box;    
                }

                form {
                    width: 500px;
                    margin: 0 auto;
                }

                input,
                textarea {
                    float: left;
                    width: 100%;
                    border: 1px solid #cccccc;
                    background: #fff;
                    font-size: 16px;
                    box-shadow: none;
                }

                .field {
                    height: 40px;
                    margin: 0 0 10px 0;
                    padding: 0 10px;
                }

                textarea {
                    height: 145px;
                    margin: 0 0 10px 0;
                    padding: 10px;
                }

                .submit {
                    height: 40px;
                    background: #ffdf23;
                    cursor: pointer;
                    color: #125989;
                    font-size: 16px;
                    border: none;
                    box-shadow: none;
                    -webkit-appearance: none;
                }

                    .submit:hover {
                        background: #125989;
                        color: #ffdf23;
                    }

                span,
                i {
                    font-size: 16px;
                    text-align: center;
                    width: 100%;
                    color: green;
                    margin: 20px 0 0 0;
                    float: left;
                }

                i {
                    color: red;
                }

                .hp {
                    display: none;
                }

            </style>

        </head>
        <body>

            <form method="post" name="form">


                <input type="text" placeholder="Ansprechpartner" class="field" name="name">
                <input type="text" placeholder="Telefonnummer" class="field" name="telefon">
                <input type="text" placeholder="E-Mail" class="field" name="email">
                <input type="text" placeholder="Feld bitte frei lassen" class="hp" name="username">
                <textarea placeholder="Ihre Nachricht.." name="text"></textarea>

                <input type="submit" value="SENDEN" class="submit" name="form">

                            <?php
                    
    if($submited) echo "<span>Ihre Nachricht wurde versendet!</span>";
                    if(
    $error) echo "<i>Bitte f&uuml;llen Sie alles korrekt aus!</i>";
                
    ?>

            </form>

        </body>

    </html>


    Als Kollation in phpMyAdmin habe ich "latin1_swedish_ci" ... weiß nicht ob das eine Rolle spielt...


    Ich hab schon z.B. versucht $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; umzuändern auf - > $headers .= "Content-Type: text/html; charset=utf-8"; ---- aber wenn ich das mache, bekomme ich die E-Mail mit den <> Zeichen.... und das ganze klappt einfach nicht...


    Hat vielleicht jemand eine einfache Lösung für mich? Vielleicht stehe ich auch total auf den Schlauch.. das ist erst mein zweites Kontaktformular was ich versuche zu starten

    Wäre für eure Hilfe sehr dankbar!



  • #2
    Moin,
    du schreibst das du die Anleitung in deinem Link gelesen hast. Schua bitte nochmal da rein. Dort wirst du sehen, dass natürlich auch die Kollation der Tabelle auf UTF-8 gesetzt werden sollte.
    Damit würde ich mal anfangen.

    Gruß
    Hoschie

    Kommentar


    • #3
      mail() sollte nicht verwendet werden. Nimm einen fertigen Mailer wie z.B. PHPMailer.

      Davon abgesehen solltest du dem Browser immer mitteilen, was du ihm sendest. Wenn du also HTML-Code mit UTF-8 Kodierung sendest, solltest du auch den passenden HTTP-Header liefern:
      PHP-Code:
      header('Content-Type: text/html; charset=utf-8'); 
      Wenn du das nicht tust, hängt dein Glück vom Verhalten des Webservers und des Browsers ab. Und auf Glücksspiele würde ich beim Programmieren verzichten.

      Kommentar


      • #4
        Memagdalena
        Zitat von hellbringer Beitrag anzeigen
        mail() sollte nicht verwendet werden. Nimm einen fertigen Mailer wie z.B. PHPMailer.
        Denn du verwendest mail() nicht korrekt. Somit wird der funktioniende Versand/Empfang auch zum Glückspiel, daher zu vermeiden.

        Siehe hier:

        http://www.php-rocks.de/thema/51-htm...phpmailer.html

        https://php-de.github.io/jumpto/mail-class/


        PHP-Code:
         f&uuml;llen 
        Und mit UFT-8 gibt es absolut keinen Grund Umlaute zu verstümmeln!
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von Hoschie Beitrag anzeigen
          Moin,
          du schreibst das du die Anleitung in deinem Link gelesen hast. Schua bitte nochmal da rein. Dort wirst du sehen, dass natürlich auch die Kollation der Tabelle auf UTF-8 gesetzt werden sollte.
          Damit würde ich mal anfangen.
          Und hast du ihren Beitrag gelesen? Sie nutzt (zumindest nicht erslichtich) keine DB.
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Nun, ich gebe zu: ich ging davon aus, als ich das geledsen habe:
            Zitat von Memagdalena Beitrag anzeigen
            Als Kollation in phpMyAdmin habe ich "latin1_swedish_ci" ... weiß nicht ob das eine Rolle spielt...

            Kommentar


            • #7
              Du musst vor allem dein Script als UTF-8 ohne BO'M abspeichern. Ja nach Editor kann man das einstellen oder man verwendet gleich einen Editor der das kann.

              Es nützt dir nichts die Ausgabe in UTF-8 zu erzwingen, wenn dein Script im Dateisystem mit einer anderen Zeichenkodierung abgespeichert wird. Im Ergebnis wirst du dann weiterhin Zeichensalat vorfinden.

              Wenn du keine DB verwendest spielt zumindest phpMyAdmin dabei keine Rolle.

              Kommentar


              • #8
                Also erst einmal vielen Dank für eure Antworten!!

                Ich hab jetzt in der PHP stehen: $headers .= "Content-Type: text/html; charset=utf-8";

                und im PHP ebenfalls die Kollation zu utf-8 überall geändert... als ich beides geändert habe hat es funktioniert. Allerdings bin ich mir nun gar nicht mehr sicher ob die Datenbank wirklich verwendet wird, ich bin aber davon ausgegangen?!

                Mit dem PHPMailer hab ich überhaupt keine Erfahrung.. ich denke ich werde das alles erstmal so lassen, solange es funktioniert.

                Kommentar


                • #9
                  Ich hab jetzt in der PHP stehen: $headers .= "Content-Type: text/html; charset=utf-8";
                  Und was passiert mit der Variable $headers? Ich bezweifle das das richtig angewendet wird, da geht es um den HTTP-Header!

                  Allerdings bin ich mir nun gar nicht mehr sicher ob die Datenbank wirklich verwendet wird, ich bin aber davon ausgegangen?!
                  Naja wer nicht wenn du.. Schau halt den Code an o.O

                  Oder Zeig mal den aktuellen Code, oben jedenfalls verwendest du keine DB, das sähe man ja im Code.
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Zitat von Memagdalena Beitrag anzeigen
                    Ich hab jetzt in der PHP stehen:
                    PHP-Code:
                    $headers .= "Content-Type: text/html; charset=utf-8"
                    Das funktioniert so nicht. Es geht um HTTP header und nicht um irgendwas was als Ausgabe an den Browser geschickt wird.

                    HTTP header werden mit der header() Funktion geschickt.

                    Zitat von Memagdalena Beitrag anzeigen
                    und im PHP ebenfalls die Kollation zu utf-8 überall geändert...
                    Was auch immer das heissen soll… PHP kennt keine Kollationen. Das kennen nur Datenbanken und es bezeichnet dort den Zeichensatz für Sortierungen, nicht den Zeichensatz der Tabelle oder DB.
                    Die müssen natürlich auch passen.

                    Zitat von Memagdalena Beitrag anzeigen
                    Mit dem PHPMailer hab ich überhaupt keine Erfahrung.. ich denke ich werde das alles erstmal so lassen, solange es funktioniert.
                    Nein das solltest Du nicht tun solange Du die anzuwendenden RFCs nicht kennst und beachtest. Und damit Du genau das nicht machen must hat einer ne Kapselung drum rum gemacht die Dir das abnimmt. Also nutze eine Mailer-Klasse Deiner Wahl sonst schiesst Du Dir gewaltig ins Knie (und anderen u.U. auch gleich noch mit)

                    Kommentar

                    Lädt...
                    X