Ankündigung

Einklappen
Keine Ankündigung bisher.

htmlspecialchars() gibt nichts aus

Einklappen

Neue Werbung 2019

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

  • htmlspecialchars() gibt nichts aus

    Hallo,

    es soll etwas aus der Datenbank ausgelesen werden, bis hier hin auch alles gut, jedoch ist es nicht sicher.
    Wenn etwas, in diesem Fall das Motto einen HTML Tag, bspw. <u> hat, soll er mittels htmlspecialchars() angezeigt werden sodass der HTML Code nicht mehr gültig ist.

    Bislang hatte ich nie Probleme damit, jedoch funktioniert es auf der Seite nicht.
    Auch schon mit error_reporting(E_ALL); versucht, keine Fehlermeldung, gar nichts. Hab es auch schon mit htmlentities() versucht, bringt leider auch nichts.

    Zeilen, die betroffen sind:

    PHP-Code:
    <?php while($kredi mysql_fetch_object($krediqry)) { ?>
                <a onmouseover="tooltip.show('<?php echo $kredi->username?> <br /> <?php echo $kredi->credits?> Kredi <br /> Motto: <?php echo htmlspecialchars($kredi->motto); ?>');" onmouseout="tooltip.hide();" id="habbo" style="float:left; margin-right:10px;"><img src="http://habbo.nl/habbo-imaging/avatarimage?figure=<?php echo $kredi->look?>&size=l&direction=2&head_direction=3&gesture=sml&size=l" /></a>
    <?php ?>
    Ausgabe im Browser:


    Keine Ahnung wieso, bislang funktionierte es immer und überall, nur auf dieser einen Datei nicht.

    Volle Datei:
    http://pastebin.com/3KB5Vi2N

    Content auf türkisch und ja, mysqli_ oder PDO, bin momentan noch nicht so weit zum wechseln.


  • #2
    Du hast ein Encoding-Problem. htmlspecialchars (siehe Parameterliste der Funktion) nimmt standardmäßig – bei neuen PHP-Versionen – UTF-8 an. Wenn der String, den du der Funktion übergibst, kein valides UTF-8 ist, wird der leere String zurückgegeben, wenn du nicht entsprechende Flags setzt.

    Code:
    &size=l&direction=2&head_direction=3&gesture=sml&size=l
    Hier musst du zudem das & als &amp; escapen. Siehe dazu auch: http://de1.php.net/manual/en/functio...uild-query.php

    Edit: Das hier…

    Code:
    onmouseover="tooltip.show('<?php echo $kredi->username; ?> <br /> <?php echo $kredi->credits;
    …wirkt anfällig für JavaScript-Injection (XSS, CSRF, …). Da fehlt vermutlich mindestens auch ein htmlspecialchars (Kontextwechsel nach HTML), wahrscheinlich auch noch ein json_encode (Kontextwechsel nach JavaScript).

    - http://stackoverflow.com/questions/1...scape-newlines

    Kommentar


    • #3
      Danke, hab die &'s ersetzte. Wie kann ich das jetzt mit htmlspecialchars lösen?

      Kommentar


      • #4
        Du musst erst mal mitteilen/ermitteln, in welchem Encoding die Daten in der DB liegen und welches Encoding du bei der Ausgabe deiner Seite nutzt.

        Auch das Encoding der DB-Verbindung mag relevant sein (http://de1.php.net/mysql_set_charset). Das ist leider immer schwierig pauschal zu sagen.

        Kommentar

        Lädt...
        X