Wie Code am besten/sinnvollsten kodieren?

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

  • Wie Code am besten/sinnvollsten kodieren?

    Hallo,

    ich habe ein Formular mit dem Quelltext, auch PHP, in einer Datenbank gespeichert werden kann. Ebenso wird dieser Code ausgelesen und in einem Eingabefeld angezeigt.
    Der Code soll später auch mal ausführbar sein.

    Wie würdet ihr den Quellcode der eingefügt werden kann umwandeln lassen? Es gibt ja verschieden Methoden wie htmlentites, mysql_escape_string, htmlspecialchars, addslashes etc.

    Ich weiß weder ob ich vor bzw. bei der Speicherung eine Umwandlung vornehmen soll oder erst beim auslesen und ausgeben im Eingabefeld?

    Der Quellcode ist für alle ersichtlich, wer einen sauberen drop table Befehl ausführt wusste wohl was er macht. Vielmehr sollen aber falsche Eingaben abgefangen werden, der Code soll immer im Eingabefeld erscheinen, auch wenn er mit sowas aufhört:

    Quellcode

    1. <!--
    oder

    PHP-Quellcode

    1. <?php /*


    Wie ist da der Königsweg oder der vermeintlich beste Weg Quellcodes sauber darzustellen?
  • Du kannst den Code nicht mit specialchars in der Datenbank speichern weil du dann hinterher nicht mehr weißt, wo nun das echte Zeichen hingehört und wo nicht und du Probleme beim ausführen bekommst. Also bleiben die Escape-Funktionen, wobei ich da glaube ich mysql_real_escape_string() verwenden würde, da die Funktion den aktuellen Charset berücksichtigt. Prinzipiell würde aber addslashes() reichen. Nach dem auslesen aus der Datenbank kannst du dann wieder "unescapen". Das weitaus größere Problem sind die angefangenen Kommentarzeichen, wobei das auf ein Klammerproblem zurückzuführen ist. Du kannst /* oder <!-- als öffnende Klammer sehen ind */ oder --> als schließende Klammer. Compiler, die dasselbe Problem haben benutzen oftmals einen Kellerautomaten um den Ausdruck zu verstehen aber ich denke du brauchst für jeden Klammertypen eine Variable und dann musst du hoch und runterzählen und zum Schluss sollte 0 rauskommen.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Reicht es nicht htmlentities zu verwenden, damit diese Klammern nicht zu Klammern werden die der Browser als Quelltext interpretiert? Kann ich dann hinterher den Quelltext quasi wegschmeissen wenn ich das mache oder lässt sich das rückgängig machen?

    Oder soll ich den Code ungefiltert in die Datenbank schreiben und nur beim auslesen die htmlentities oder so anwenden?
  • ich würde ihn vermutlich original in der Datenbank speichern und beim Auslesen htmlentities anwenden. Kostet mehr Performance aber dafür weniger Speicher.

    Wenn du den Code aber sehr zur Darstellung und nur selten zum Ausführen nutzt, dann speicher ihn eben mit htmlentities und wende beim Auslesen (zum Ausführen) html_entity_decode an.