htmlspecialchars Probleme

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • htmlspecialchars Probleme

    Hey zusammen!

    Ich habe nun seit doch längerer Zeit wieder mal ein Problem und da ich eben solange relativ wenig mit PHP gemacht habe, hoffe ich, dass ihr mir helfen könnt!

    Das Problem ist, dass sich nach der Texteingabe in einem Formular bei bestimmte enthaltenen Zeichen (z.B. ° oder `) an egal welcher Stelle und egal in welcher Anzahl mein Code überschlägt und im Endeffekt in der betreffenden $_POST nichts mehr steht.
    Ich habe jetzt angefangen zu suchen und so wie es scheint, ist die htmlspecialchars-Funktion der Verursacher, zumindest funktioniert alles reibungslos, wenn ich diese auskommentiere.
    Aufgetreten ist das Ganze, als mein Hoster von PHP 5.2 auf 5.4 umgestellt hat.

    Den Codeausschnitt hänge ich an
    Spoiler anzeigen
    function secureSuperGlobalPOST(&$value, $key) {

    if(get_magic_quotes_gpc()) $_GET[$key] = stripslashes($_POST[$key]);
    $_POST[$key] = htmlspecialchars($_POST[$key], ENT_QUOTES);
    $_POST[$key] = str_ireplace("script", "blocked", $_POST[$key]);
    $_POST[$key] = mysql_real_escape_string($_POST[$key]);
    return $_POST[$key];

    }


    Vielen Dank im Voraus für eure Mühen!
    Lu

    PS: Ich bin mir nicht sicher, aber eventuell fallen Umlaute auch durch

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von venum-lk ()

  • Hey,

    danke für deine Antwort bYemma.
    Ich habe heute noch einmal ein bisschen gesucht und die Lösung gefunden.

    Zuerst wegen mysql_real_escape_string(). Die Funktion ist weiterhin verfügbar, mysql_escape_string() wurde deprecated.

    Mein Problem war, dass htmlspecialchars() mit dem Update auf 5.4 als Standard-Zeichensatz UTF-8 heranzieht.
    Ich brauche aber ISO-8859-15 (Westeuropäisch, Latin-9).

    Damit schaut mein Code nun wie folgt aus:

    PHP-Quellcode

    1. <?php
    2. // alt:
    3. $_POST[$key] = htmlspecialchars($_POST[$key], ENT_QUOTES);
    4. // neu:
    5. $_POST[$key] = htmlspecialchars ($_POST[$key] , ENT_QUOTES | ENT_XHTML , 'ISO-8859-15');
    6. ?>

    Alle Flags und Zeichensätze wären auch noch mal auf php.net nachzulesen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von venum-lk ()