Stefan: Umlaute in Formular werden in HTML-Entities umgewandelt

Hi Leute,

habe folgendes Problem: ich habe ein Formular, dass ich per POST an ein PHP-Script übergebe. Dort wird per RegEx überprüft, ob die Felder korrekte Zeichen enthalten. Es sollen auch umlaute erlaubt sein. Dabei ist mir aufgefallen, dass im PHP-Skript z. B. statt ä nur ä ankommt, was natürlich beim Regex und später auch beim DB-Eintrag zu Problemen führt.

Ich verwende durchgängig iso-8859-1 als Charset, Basis ist XAMPP. Liegt das am Webserver, an PHP, an HTML und was muss ich tun, damit in PHP im POST ä, ö, ü, ß und nicht ä, ö, ü, ß stehen?

Danke und Gruß,

Stefan

  1. Lieber Stefan,

    was muss ich tun, damit in PHP im POST ä, ö, ü, ß und nicht ä, ö, ü, ß stehen?

    Du musst vermeiden, dass diese im HTML-Code stehen, der im Browser ankommt.

    Sollte mein Hinweis zu keiner Lösung führen, dann liegt das daran, dass ich ohne genauere Kenntnis Deiner Sachlage keine genaueren Angaben machen kann.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      das hilft mir leider nicht wirklich weiter. Wie soll ich das verhindern? Der HTML-Code wird ja erst von PHP erzeugt, d. h. wenn es schon in PHP falsch ankommt, dann habe ich ja gar keine Möglichkeit, was zu ändern.

      Wenn du mir sagst, welche Infos zu brauchst, lasse ich dir diese gerne zukommen.

      Viele Grüße,
      Stefan

      1. Lieber Stefan,

        Wenn du mir sagst, welche Infos zu brauchst, lasse ich dir diese gerne zukommen.

        welche Infos würdest Du denn brauchen, um mir zu raten, wenn ich Dir sagte, dass meine Seite immer um eins Komma fünf zu hohe Prozentwerte bei den Schriftgrößen hätte?

        Meine Glaskugel ist bei Carglas zum Reparieren, aber die verstehen ja nur etwas von Scheiben, nicht jedoch von Kugeln...

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Ah, mal wieder einer, der mit geistreichen Glaskugel-Sprüchen um sich wirft. Du bist wohl auch einer von der Sorte, der lieber einen halben Roman über Belehrungen über den optimalen Forenbeitrag schreibt, statt kurz zu sagen, was er an Infos braucht, dann wären wir nämlich jetzt schon weiter. Danke, dann lass ich mir lieber woanders helfen.

          1. Hi,

            Ah, mal wieder einer, der mit geistreichen Glaskugel-Sprüchen um sich wirft. Du bist wohl auch einer von der Sorte, der lieber einen halben Roman über Belehrungen über den optimalen Forenbeitrag schreibt, statt kurz zu sagen, was er an Infos braucht,

            RTFCharta!

            dann wären wir nämlich jetzt schon weiter.

            Ja, wenn du mal mit was brauchbarem um die Ecke kommen wuerdest ...

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Wie aus meiner Frage bereits hervorgeht, weiß ich nicht, wo das Problem liegt. Ist das ein Problem von HTML, ein Problem von PHP, ein Problem vom Apache oder sonstwas? Ich werde jetzt sicher nicht den kompletten HTML-Code, den PHP-Code, meine Apache-Config und meine PHP-Config posten, nur damit keiner sagen kann, ich würde keine Angaben machen.

              Vielleicht ist das ja auch ganz normal, dass das umgewandelt wird, weiß ich das? Die Info würde mich aber schon weiterbringen. Wenn nicht so ist, und einer eine Idee hat, werde ich gerne die entsprechenden Angaben machen, aber so, dass es auch Sinn macht!

              1. Hi,

                Wie aus meiner Frage bereits hervorgeht, weiß ich nicht, wo das Problem liegt.

                Wie aus unseren Antworten hervorgehen sollte - wir so ohne weiteres auch nicht.

                Ich werde jetzt sicher nicht den kompletten HTML-Code, den PHP-Code, meine Apache-Config und meine PHP-Config posten, nur damit keiner sagen kann, ich würde keine Angaben machen.

                Reduziere das ganze auf ein Minimalbeispiel, an dem das Problem nachvollziehbar bleibt. Wenn dann noch weitere Info von Noeten ist, fragen wir nach.
                Ohne das koennen wir ja nicht sehen, was du wo (und ggf. falsch) mit den Daten machst .

                Vielleicht ist das ja auch ganz normal, dass das umgewandelt wird, weiß ich das?

                Sowas machen die Browser eigentlich nur dann, wenn sie ein Zeichen in der verwendeten Kodierung nicht darstellen koennen.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
              2. Lieber Stefan,

                Ist das ein Problem von HTML,

                zeig doch endlich einen Code-Ausschnitt (AUSSCHNITT!!!), damit man Dir überhaupt was sinnvolles raten kann!

                ein Problem von PHP,

                zeig doch endlich einen Code-Ausschnitt (AUSSCHNITT!!!), damit man Dir überhaupt was sinnvolles raten kann!

                ein Problem vom Apache oder sonstwas?

                Falls Deine Apache-Config damit zu tun haben sollte, dann nenne uns entsprechende Einstellungen.

                Hast Du den Link von ChrisB nicht nachverfolgt und die Charta gelesen? Da steht, dass man geeignete Code-Beispiele _gleich_ bringen soll, wenn man vernünftige Antworten erwartet... Und genau deshalb habe ich von einer Glaskugel angefangen, da Du dieses auch weiterhin so hartnäckig unterlässt.

                Liebe Grüße,

                Felix Riesterer.

                --
                ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Moin!

    Dabei ist mir aufgefallen, dass im PHP-Skript z. B. statt ä nur ä ankommt, was natürlich beim Regex und später auch beim DB-Eintrag zu Problemen führt.

    Wenn sowas passiert, machst du irgendwas ziemlich falsch. In $_POST stehen NIE Entities wie ä drin, jedenfalls nicht bei den mir bekannten Browsern.

    Was passieren kann - dann aber als unbedingt zu vermeidender Unfall zu sehen ist - sind numerische Zeichenreferenzen der Form Ӓ. Das ist dann der Hinweis, dass der Browser ein Encoding verwenden muß, in dem sich das tatsächlich eingegebene Zeichen nicht darstellen läßt. Leider wird keine Unterscheidungsmöglichkeit mitgeliefert für den Fall, dass der Benutzer wirklich diese numerische Zeichenreferenz eingegeben hat, und nicht das damit gemeinte Zeichen. Andere Browser ersetzen stattdessen nicht codierbare Zeichen durch Fragezeichen.

    Ich verwende durchgängig iso-8859-1 als Charset, Basis ist XAMPP. Liegt das am Webserver, an PHP, an HTML und was muss ich tun, damit in PHP im POST ä, ö, ü, ß und nicht ä, ö, ü, ß stehen?

    Da in $_POST nie Entities stehen, machst du irgendwas, was du uns nicht erzählt hast.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."