Kontaktformular aus der PHP DVD und der damit verbundene Versand der email: Warum sind harte Returns, Umlaute und das "ß" nicht in der email dargestellt?

  • Hallo, mal wieder der Anfänger, diesmal bin ich bei PHP angelangt.


    Kontaktformular aus der PHP DVD und der damit verbundene Versand der email: Warum sind harte Returns, Umlaute und das "ß" nicht in der email dargestellt?


    Obiger Titel ist glaube ich eindeutig. Danke für die Hilfe. Wenn man mehr Infos braucht bitte kurze Rückantwort.


    hier der Code:


  • Ich verstehe dich nicht ganz.

    Aber kann es sein das generell in Emails keine Umlaute,ß und andere Zeichen erlaubt sind?


    Zumindest habe ich noch keine Emailadresse damit gesehen.


    Oder habe ich deine Frage falsch verstanden?

  • Sorry, aber ich glaube ich habe mich nicht richtig ausgedrückt. Tut mir leid


    Das Problem ist nicht die Eingabe der email- Adresse im Formular.


    Das Problem ist im Bereich der normalen Eingabe der Nachricht. Textlich kann ich hier Umlaute, oder harte returns eingeben, aber wenn die Nachricht versedet ist, empfängt der Empfänger keine Umaute und "ß" und auch keine harten Returns, sondern ziemlich viel Mist.


    Somit ist dieser Bereich Teil meiner Fragestellung (kopiert von oben):


    PHP
    <p>Anliegen / Nachricht: <br>
            <textarea
                rows="10"
                cols="80"
                name="textinhalt"><?php
            echo $textinhalt;
        ?></textarea>


    Beispiel :


    Grue&WCF_AMPERSANDße


    --> statt Grüße (ü als Umlaut wird nicht genommen und ß auch nicht.


    Danke für die Hilfe oben trotzdem.

    Bild der email:

    html-seminar.de/woltlab/attachment/1258/

  • Oups, Du hast mal wieder Recht Sempervivum.


    Allerdings klappt es jetzt gar nicht mehr:


    Hier mein Code: Was habe ich jetzt falsch gemacht:

  • Anscheinend hast Du da zwei Dinge vermengt, die nicht zusammen passen:

    Zuerst erzeugst Du ein Array $headers, offenbar nach dem Muster des Links auf php-kurs.

    Dann überschreibst Du dieses jedoch in Zeile 10 mit einem String, so dass der Inhalt verloren geht.

    Dann wendest Du die Funktion implode() auf einen String und $headers an, die jedoch String und ein Array als Parameter erwartet, während die $headers jetzt einen String enthält.

  • Bin noch nicht ganz so weit beim Lernen, aber wenn ich Dich verstehe müßte das dann klappen



    Allerdings zerschießt mir dann alles und die ganze Seite wird gar nicht angezeigt.

  • Da fehlt jeweils das abschließende Semikolon:

    Code
        $headers[] = 'From: sternberg.konrad@web.de'
        $headers[] = 'Reply-To: sternberg.konrad@web.de'

    Sehr hilfreich in Bezug auf solche Fehler ist ein Editor, der sie gleich beim Editieren anzeigt.

  • Das nennt man einen klassischen Anfängerfehler - sollte mir eigentlich nicht mehr so oft passieren. Brackets hat da nichts angezeigt.


    Allerdings kommen die Umlaute jetzt trotzdem noch falsch.


    Hier nochmal der komplette Code: (Vielleicht sollte ich einfach ins Bett und darüber schlafen)

    Trotzdem Danke wenn ich heute Abend noch die Fehler herausbekomme.


    Einmal editiert, zuletzt von olkostbe () aus folgendem Grund: Fehler im Code nachträglich gefunden

  • 1. Aktiviere bitte die Ausgabe von PHP-Fehlermeldungen. Dann siehst du direkt, wenn noch Syntax-Fehler bestehen.


    Bitte ganz an den Anfang deines PHP-Codes einfügen:

    PHP
    error_reporting (E_ALL);   
    ini_set('display_errors', 'On');


    2. Informiere dich spätestens, wenn du den Code auf einer öffentlichen Website nutzen möchtest, über moderneres PHP sowie Sicherheitsaspekte, die zu beachten sind.

    Da dieses Thema etwas umfangreicher ist und es dir wahrscheinlich wenig bringen würde, wenn ich dir jetzt irgendwas an den Kopf werfen würde, belasse ich es erstmal dabei und warne dich lediglich.

    Gerne kannst du zu dem Thema nochmal ein extra Thread erstellen, wo wir dann auf sowas eingehen.

  • Danke für den Hinweis. Werde den oben genannten Code mal eingeben und überprüfen. (Nachtrag: Gerade eingegeben und geprüft: Alles ok, keine Fehlermeldung)


    Bin jetzt trotzdem irritiert, weil ich schon mit dem Programm auf meiner Webseite (zwar nur so zum Spielen; aber trotzdem..) bin.


    Heißt das jetzt, dass ich den Part abschalten sollte?

  • Nein, nicht unbedingt.


    Du hast zumindest schon gewisse Ansätze drin, die ganz gut aussehen, und außerdem ist ein nicht abgesichertes Formular jetzt auch nicht eine dermaßen große Sicherheitslücke.


    Informiere dich einfach demnächst mal über das Thema, hol dir hier eventuell Hilfe und dann passt das schon. Solange deine Website eh nahezu Null Traffic generiert, ist das nicht so schlimm.


    Habe es lediglich erwähnt, da man das Thema Sicherheit niemals unterschätzen sollte.

    Deutlich kritischer wäre es jetzt z.B. bei einem Login-System.

  • Ich mutmaße einfach mal :)


    Der Server liefert entweder kein UTF-8 aus oder ist unbestimmt, dass der Browser raten muss:

    Mehr dazu unter https://www.html-seminar.de/he…rmationen-404-401-301.htm


    Um den Server es zu "befehlen", einen entsprechende Anweisung in .htaccess (siehe Link oben mit)

    Code: .htaccess
    AddDefaultCharset utf-8


    Beim Formular kannst du auch noch mitgeben:

    HTML
    <form action="absenden.php" accept-charset="UTF-8">


    Einfach mal testen, ob das dein Problem behebt.

  • Danke Axel.


    - Obige Codes eingegeben.

    - Auch den link mal geprüft und ebenso beachtet (zumindest glaube ich das).

    - In mehreren Browsern getestet (Chrome und Firefox)


    ===> Leider ohne Erfolg.


    Habe bei Strato (Über den HTML-Seminar link ;) ) bestellt und nutze den damit.

    Link zur Webseite: http://einsterneinberg.de/kontakt.php


    Den .htaccess Code:

    Code
    AddDefaultCharset utf-8
    ErrorDocument 404 /fehlermeldung-404.php

    Wenn Ihr Profis noch Infos braucht bitte melden.


    Bin etwas ratlos und hoffe auf die Experten hier im Forum.


    Danke

  • Hast Du die Datei auch als UTF-8 abgespeichert? Funktioniert bei mir einwandfrei, nachdem ich dies getan habe und das Kodieren in Entities deaktiviert habe. Beim Speichern in anderem Format funktioniert es nicht mehr.

    Code
    $textinhalt = htmlspecialchars($textinhalt);
  • Sorry, Sempervivum. Ich verstehe jetzt nicht was Du mir sagen willst.

    Welche Datei als UTF-8 abspeichern?

    Was ist UTF-8 abspeichern? Bisher dachte ich, dass der Zeichensatz über <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> im html Code (wie oben beschrieben definiert wird.

    Und auch Deinen Hinweis auf "Kodieren in Entities deaktivieren" ist mir unklar.


    Und wo soll ich den von Dir eingestellten Code $textinhalt = htmlspecialchars($textinhalt); einstellen ?


    Bin halt doch noch einer von den kleinen Anfängern. Puh; - mir tut manchmal die rein elektronische Lernweise weh.

  • Zitat

    Welche Datei als UTF-8 abspeichern?

    Was ist UTF-8 abspeichern?

    Die PHP-Datei mit deinem Kontakformular. Wie man das Format einstellt, hängt von deinem Editor ab. Meistens findest man es unter "Speichern - unter" oder in den Einstellungen.

    Code
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    macht nur Sinn, wenn die Datei auch wirklich in diesem Format gespeichert wurde.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!