Hi!
mysql_query("INSERT INTO artikel (titel, inhalt, erstellt) VALUES('$titel','$inhalt','$erstellt') ") or die(mysql_error());
Wenn ich in $inhalt nun einfache Anführungszeichen habe ('), gibt es einen Syntax-Error. Wie kann ich das umgehen, damit ich beide Arten von Anführungszeichen nutzen kann, die dann in der DB gespeichert werden?
Kontextwechsel beachten. Du hast sonst nicht nur ein Syntax-Problem sondern auch eine SQL-Injection-Lücke.
Der Inhalt wird aktuell durch ein einfaches echo wiedergegeben. Nun möchte ich aber (wie im Titel geschrieben) auch PHP-Code in den Artikeln unterbringen, um bspw. eine zuvor definierte Funktion aufzurufen. Wie mache ich das?
Um Code zu interpretieren und auszuführen, der in einem String vorliegt, ist eval() vorgesehen. Du hast dann aber keine Kontrolle, was da alles an Code ausgeführt werden kann. Du wirst kaum einen eigenen Syntaxparser aufsetzen, der versucht, unerwünschten Code zu erkennen. Im Allgemeinen verzichtet man lieber auf die Anwendung von eval() auf Texte unsicheren Ursprungs. DBMS-Inhalte gehören dazu, sie könnten kompromittiert sein.
Ich plädiere lieber für eine begrenzte Zahl an Platzhaltern, nach denen du scannst und entsprechende vordefinierte Funktionen ausführst. Damit bist du natürlich weniger flexibel, aber deutlich sicherer.
Weiterführendes Problem:
Momentan habe ich alles in Dateien abgespeichert. Einzelne Templates etc. werden über include() aufgerufen. Wenn nun der Code in der DB steht, wie kann ich dann dass include() ersetzen, um das Template ebenfalls aus der DB abzurufen?
Versuch darauf zu verzichten. Code im DBMS ist immer ein Problem, weil man ihn dort schlecht kontrollieren kann.
Lo!