|
|||
![]()
Huhu Leute,
Ich weiß, dass das Thema schon häufiger angesprochen wurde und sicher seid ihr es auch leid. Also folgender Sachverhalt: Für meine Website habe ich ein "Grundgerüst". Kopfbereich, Navigation und so weiter werden durch php includet was alles auch super funktioniert. Der eigentliche, seitenspezifische Inhalt (also HTML- und ggf. PHP-Code [der wiederum php-Dateien Includen soll]) soll aus einer Datenbank geladen werden. Solange es sich nur um HTML-Code handelt ist alles recht einfach. Der HTML Code der Seite wird mit htmlentitys() Datenbankkonform umgewandelt und dort gespeichert. Mit html_entity_decode() wird der Code aus der Datenbank wieder in gültigen HTML Code umgewandelt. Wenn sich im HTML Code nun php Code befindet. Zum Beispiel <?php echo "test" ?> Wird dieser nicht ausgeführt sondern erscheint nur im Quellcode da der Browser damit nix anfangen kann. Ich habe schon nach Lösungen für das Problem gesucht und diese beiden hilfreichen Forendiskussionen gefunden: SELFHTML Forumsarchiv / 2009 / Februar / PHP aus Datenbank nur in Quelltext sichtbar http://xhtmlforum.de/41680-php-code-...-beziehen.html Aber leider konnten mir diese auch nicht wirklich weiterhelfen. Sehr oft wird die Funktion eval() erwähnt die aber ein hohes Sicherheitsrisiko darstellen soll. Mittlerweile vermute ich, das ich vielleicht ein konzeptionelles Problem bei meiner Website habe. Könnt ihr mir bei diesem Problem vielleicht Weiterhelfen? Gruß Garlandt |
Sponsored Links |
|
|||
![]() Zitat:
Das Problem das du allerdings in deinem Design hast, ist, dass es sich ja auf MySQL stützt. deswegen erhälst du von MySQL für dein HTML-Content einen String als Rückgabetyp. In dem String kann aber normalerweise kein PHP ausgeführt werden (was auch gut so ist), weil alles was zwischen den "" steht PHP so ziemlich egal ist ![]() Die Funktion eval() ist dazu da um Variablen in Strings zu ersetzen. Sicherheitstechnisch halte ich sie aber auch für bedenklich, weil du damit ziemlich anfällig für MySQL-injection wirst... Zitat:
HTML Content ist bei einer Webseite ja Statisch, deswegen wird er in .tpl-Dateien gespeichert, dazu baut man sich mit PHP dann ein Template-System (oder wenn man keine Lust hat nimmt man einfach Smarty). Die Idee dahinter ist einfach gesagt, Content vom Design komplett zu trennen, so dass das Template System hinterher nur noch dafür zuständig ist, was vorne angezeigt wird. Sich mir Smarty zu beschäftigen lohnt sich auf jeden Fall (ist einfach und schnell zu installieren) und ist sicher genau das, was du brauchst. Und noch ein Merksatz: Verwende die Datenbank nur für Daten ![]() Geändert von Borsti (29.04.2011 um 13:10 Uhr) |
Sponsored Links |
|
||||
![]() Zitat:
Das ist so nicht ganz richtig, ich hoffe/denke Du weißt das, aber es sollte hier nicht falsch stehen bleiben. ![]() eval() führt eine Zeichenkette als PHP-Code aus (wie es auch im Link steht), man kann mit dessen Hilfe Variablen ersetzen, aber der Punkt ist, dass beliebiger PHP-Code ausgeführt werden kann. Schleifen, Bedingungen, andere Funktionen, include, require, ... gehört alles dazu. [/klugscheiß-modus] |
|
||||
![]() Zitat:
Zum Thema: Hmm verdammt. Scheint als wäre die Lösung für mein Problem nicht ganz so einfach wie ich gehofft habe. Von Templates habe ich leider (noch) keine Ahnung. Zitat:
Etwa so: Code:
mysql_real_escape_string("HTML Code mit spezifischen sonderzeichen etc...") Das Ergebnis wird in die Datenbank geschrieben. Code:
htmlspecialchars("umgewandelter HTML-Code-String aus der Datenbank") Bezüglich meiner Eingangsfrage: Wenn ich euch richtig verstehe, ratet ihr mir meine Website mit einem Templatesystem aufbauen und in der Datenbank nur Daten zu speichern. Gruß Garlandt |
|
|||
![]() Zitat:
__________________
Gruß Dani |
|
|||
![]()
OK jetzt bin ich verwirrt. Dem letzten Post entnehme ich das Template-Systeme, CMS und so weiter aus diversen Gründen schlecht sind.
Ich nehme an das es sich hierbei eine Frage handelt für die es keine klare Antwort gibt: Sollten Websites mit Templates entwickelt werden oder nicht? Ich bin noch Einsteiger was Website Konzeption angeht. Gruß Garlandt Edit: Hab mir jetzt dieses "Tutorial" über Templates durchgelesen und verstehe nur Bahnhof xD. Naja zumindest verstehe ich was passiert. Geändert von Garlandt (30.04.2011 um 00:15 Uhr) |
|
|||
![]() Zitat:
Ich benutzte momentan Smarty, weil es sehr einfach zu schreiben ist (einfacher als mit der eigenen von PHP) und denke, das auch Anfänger damit eventuell weniger Probleme haben... ![]() @mantiz ich hab noch nie mit der Funktion gearbeitet, deswegen hab ich nur das erste Beispiel auf der Seite überflogen. ![]() Für solche Sachen finde ich sprintf() besser... Und PHP-Code schreibt kein Vernünftiger in einen String ![]() Back to Garlandt: Also: Es ist völliger Unsinn HTML-Daten in der Datenbank abzuspeichern. Wie gesagt: MySQL nur für Daten nehmen. Du solltest dir folgende Struktur aufbauen (im FTP): Code:
./ /template/header.phpcontent1.phpcontent2.phpfooter.phpindex.php PHP-Code:
content1.php und content2.php sind dann deine Variablen PHP-Sachen. Vorteil dabei ist, das du in den einzelnen includeten Dateien dann wieder irgendwelchen PHP-Code schreiben kannst, der dann hinterher in der index.php angezeigt wird. Geändert von Borsti (30.04.2011 um 14:09 Uhr) |
|
|||
![]()
Hmm ok. Ich verstehe das Prinzip. Im Grunde habe ich so eine ähnliche Konstruktion Bereits.
Kopf, Fuß und Navigation werden aus ausgelagerten php Dateien includet. Nur der Inhalt, der eben Seitenindividuell ist, soll dynamisch erstellt werden. Wenn also kein HTML-Code in der Datenbank gespeichert werden soll, dann vielleicht der Inhalt das HTML-Codes? Ein Beispiel wäre vielleicht ein Newssystem. Und weils so lustig ist das ganze auch noch Mehrsprachig. Auf der news-Seite würde wie auf jeder Seite des Projektes head, foot und navigation includet. Im Inhaltsbereich wird eine php-datei includet die quasi das "Gerüst" für den Newsbeitrag/-artikel darstellt. Der Newstext, also reiner Text ohne Code, könnte aus einer Datenbank geladen werden. Die Sprache kann über eine $_GET variable geregelt werden. Nur sehe ich dabei ein kleines Problem. Wenn der Newstext mehrere Absätze hat sollte jeder Absatz auch in in einem p-Tag stehen. Wenn im Text auch noch Bilder oder Videos enthalten sind wirds noch komplizierter. Ich kann ja schlecht jeden Absatz als eigenen Datensatz speichern. Außerdem bräuchte dann jeder Artikel eine eigene Tabelle (wenn ich mich nicht irre) und das ist nun wirklich nicht zweckmäßig. Ich hoffe das Problem, welches ich hier sehe, konnte ich verständlich machen. Was würdet ihr empfehlen? Gruß Garlandt |
Sponsored Links |
|
|||
![]() Zitat:
![]() Zitat:
Zum Beispiel Wordpress. Dazu müsstest du aber vielleicht noch sagen, was das genau für eine Webseite ist, an der du arbeitest. |
Sponsored Links |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
HTML Code in Datenbank speichern, aber wie? | Garlandt | Serveradministration und serverseitige Scripte | 5 | 03.05.2011 17:41 |
Redesign für Steiner Cycling Team | pkipper | Site- und Layoutcheck | 11 | 09.02.2011 12:25 |
PHP Code aus einer Datenbank beziehen und ausführen? | Zen5656 | Serveradministration und serverseitige Scripte | 3 | 03.09.2006 16:20 |
HTML Code auf Webseite darstellen | Lloyd Larkin | Offtopic | 7 | 18.07.2006 16:15 |
Per PHP Seitenteile includen - als PHP, HTML oder anderes? | jottlieb | Serveradministration und serverseitige Scripte | 9 | 24.01.2006 14:46 |