Homepage selbermachen 7.852 Themen, 35.619 Beiträge

Problem mit PHP und MySQL

BloodC@ / 2 Antworten / Baumansicht Nickles

Hallo,

ich habe ein etwas ausergewöhnliches Problem:
Ich schreibe eine Website, die komplett online editierbar sein soll. Dazu muss ich einen PHP-Quelltext aus einer .php Datei in die MySQL Datenbank laden. Ich bin soweit, dass ich den gesamten Inhalt der .php Datei in einer variablen $code habe. Nun muss ich mit einem INSERT INTO bla bla Befehl den Inhalt von $code in die Datenbank laden. Das klappt allerdings nur, wenn es sich um normalen Text, oder um normales HTML handelt. Sobald ich ein etwas umfangreicheres (hat nichts mit der Bytezahl zu tun) PHP-Script in die Datenbank laden will, klappt es nicht, da er wohl irgendwie mit den Anführungszeichen nicht zurecht kommt, obwohl ich $code innerhalb des mysql_db_query Befehls von PHP in einfache Anführungszeichen gesetzt habe. Muss ich $code vorher irgendwie codieren, damit ich den Quelltext in die Datenbank bekomme? Es muss irgendwie gehen, denn wenn ich den Quelltext kopiere und über eine textarea einfüge und mit einem Formular poste, dann geht er fehlerfrei in die Datenbank. Wie kann ich das Problem lösen, außer dass ich $code erst mit htmlentities in eine Textarea eines Formulars schreibe, was dazu führt, dass ich einen knopf mehr drücken muss (submit)?

bei Antwort benachrichtigen
xafford BloodC@ „Problem mit PHP und MySQL“
Optionen

du kannst den code eventuell über entities übersetzen lassen, so daß alle sonderzeichen in ihre entitäten umgewandelt werden z.b. mit urlencode()oder du nutzt, wie man es normalerweise macht die möglichkeit zum escapen mittels addslashes().
entitäten wären sinnvoll, wenn der code später als code dargestellt und nciht ausgeführt werden soll, wenn er aber später wieder normal geparst werden soll, dann escape ihn:
$code=addslashes($code);
und nach dem auslesen aus der datenbank und vor dem ausführen
$code=stripslashes($code);

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
BloodC@ xafford „du kannst den code eventuell über entities übersetzen lassen, so daß alle...“
Optionen

Danke, ich kann mit $code=addslashes($code); alles perfekt in die DB laden. Wenn ich den Inhalt anschließend wieder in eine .php Datei speichere, ist sie Byteweiße identisch mit der vorherigen, ohne dass ich stripslashes verwende.

bei Antwort benachrichtigen