Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   dynamisch oder statische Seiten/ Blöcke integrieren (https://boardunity.de/dynamisch-statische-seiten-bl-cke-integrieren-t3388.html)

eBoy 04.08.2005 08:51

dynamisch oder statische Seiten/ Blöcke integrieren
 
Ich bastle an meiner Seite und überlege mir gerade ein System für die Seitenaufrufe und Integration der Blöcke.

Es gibt:
- html- und php-Seiten/ Blöcke aus Dateien
- html- und php-Seiten/ Blöcke aus der DB
Alle diese Seiten/ Blöcke haben einen Eintrag in der DB (Table pages bzw blocks), welcher die Zugriffsrechte uws. regelt.
Die Seiten/ Blöcke aus Dateien werden einfach mittels include eingefügt, während diese aus der DB mittels eval ausgeführt werden.

Nun überlege ich diese Seiten/ Blöcke aus der DB, anstatt den Code aus der DB mit eval auszuführen, einfach in Dateien zu cachen und diese dann wiederum nur zu includen.
Dies hätte den Vorteil das ich auf eval, was ein Sicherheitsrisiko sein kann, verzichten kann und alle Aufrufe einfach per include abgewickelt werden können.

Deshalb überlege ich mir grade:
1.) Soll ich ausschließlich mit Dateien und include arbeiten.
2.) Sollen die gecachten Dateien im Cache-Ordner abgelegt werden.
3.) Oder diese "gecachten" Dateien einfach wie "richtige" Blöcke angelegt und im Ordner pages bzw blocks gespeichert werden (Im Format kein Unterschied zu "regulären" Blöcken).

Zu welcher Lösung ratet ihr mir? Aus SIcherheitsgründen oder auch der Umsetzbarkeit und Geschwindigkeit

wanagi 04.08.2005 10:42

Zunächst einmal würde ich grundsätzlich von eval() abraten. Das schreit förmlich nach "Hack mich" :)
Deine Anwendung lässt sich meiner Meinung nach mit einer Templateengine ala Smarty oder Savant lösen. Wenn du unbedingt deine Templates in einer Datenbank hinterlegen willst so ist dies hiermit auch möglich und du kannst dich auf das wesentliche konzentrieren, da das cachen und ähnliches direkt von der Templateklasse erledigt wird.

Schau am besten mal auf http://smarty.php.net. Das ist die Templateklasse meiner Wahl.

eBoy 04.08.2005 10:48

Ich habe bereits eine Template-Klasse, die das cachen von Templates in php-Dateien übernimmt und FOREACH, IF, ELSEIF, INCLUDE unterstützt ;)
Es geht auch nicht um die Umsetzung an sich, sondern eher um den Ansatz, wie es gelöst werden soll.
Also bist du auch eher für das Speichern innerhalb einer Datei und den einfachen include selbiger bei Bedarf?
Und dann steht noch die Frage, ob diese als Cache-Dateien oder eben normale Seiten/ Blöcke abgelegt werden sollen?
Sollte man diese in ein entsprechendes Format bringen, so unterschieden diese sich in keinster Weise von einer Seite/ einem Block aus einer Datei.
Wäre das dann icht sogar am sinnvollsten?

TRS 05.08.2005 13:23

eval() ist keine Gefahr, wenn entsprechend Kontrolle über seinen Code ausübt. Wenn du Performance in Form von Geschwindigkeit möchtest, so solltest die Datenbank nutzen: Ram ist ist schneller Festplatte. Aber damit läufst du auch Gefahr, dass Tonnen an Ram benötigt werden.

eBoy 06.08.2005 09:56

Ich werde das jetzt einfach so machen:
html-Seiten können direkt in der DB abgelegt und auch aus dieser geladen werden. Seiten aus Dateien stellen eh keine Probleme da, die werden per include eingefügt. Dynamische php-Seiten werden nach dem erstellen in eine Datei geschrieben und auch per include eingefügt. Dadurch vermeide ich es php-Code aus der DB mit eval () auszuführen, da ja beim erstellen der Seite nicht unbedingt auf Sicherheit geachtet wird.

Scotty 06.08.2005 14:35

Ich hab von diesen Sachen noch kein großen plan ;), finde es nur sehr umständlich wenn die Templates in die DB gepackt werden, bei Foren in etwa und alles übers ACP bearbeitet werden muss…

eBoy 08.08.2005 06:21

Es werden ja nicht die Templates in die DB geladen, sondern viel mehr die Inhalte der Seite ;) Natürlich muss in einer HTML-Seite auch mal ein wenig Layout stecken (DIV's oder Tabellen z.B.), aber das meiste geht über Templates in Dateien ;)

Scotty 08.08.2005 09:06

? Na aber beim wbb oder vb wird doch alles in der DB gespeichert, hier muss und kann man nur über das ACP Anpassungen vornehmen?

eBoy 08.08.2005 11:55

Das verstehe ich jetzt nicht ganz...
Wie soll ALLES in der DB gespeichert werden? Auch das Grundlegende Layout der Seite??? Wohl kaum! Nur die Beiträge und diese wiederum nur als Variablen Beitrag und Titel (und was sonst noch benötigt ist) und DIESE Variablen sollten doch dann einfach in das Layout eines Beitrages gesteckt werden (per Schleife wird das dann je Beitrag einmal ausgegeben)...
Vielleicht reden wir auch gerade aneinander vorbei???

Scotty 08.08.2005 12:31

Zitat:

Zitat von eBoy
Das verstehe ich jetzt nicht ganz...
Wie soll ALLES in der DB gespeichert werden? Auch das Grundlegende Layout der Seite???

Ja, nie dir das neue WBB oder VB angeschaut? Sämtliche CSS Einstellungen und einzelne HTML Templates sind hier in der DB gespeichert…

eBoy 08.08.2005 13:53

Ist das überhaupt sinnvoll? Ich meine eine DB ist schnell, vielleicht ja auch schneller als ein include, doch so viel in die DB abzulegen lässt diese doch gewaltig anwachsen lassen...
Ich habe mit dem neuen WBB nichts am Hut und mit VB allgemein sowieso nicht ;)
Werde mir das aber mal anschauen.

Bleibt aber die Frage im Raum: Macht es Sinn viel und fast alles in die DB zu packen?

TRS 08.08.2005 15:36

Im Bezug auf Geschwindigkeit ist es sinnvoll, da der Zugriff über Arbeitsspeicher schneller ist als über Festplattenzugriff. Es stellt sich jedoch die Frage, ob man diesen Geschwindkeitsvorteil nicht durch Optimierung des restlichen Codes besser erreichen könnte.

eBoy 09.08.2005 06:21

Eben, außerdem wird die Datenbank bedeutend mehr beansprucht, wenn man alles darin ablegt und unzählige Abfragen für den Seitenaufbau benötigt...
Je nach Webspace und Hoster gibt es ja auch öfters mal Probleme mit der DB.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25