[PHP] Verschiedene Layouts

Moin,

Ist es möglich mit PHP mehrere Website-Layouts zu definieren? Und wenn ja, wie.
Habe zwar gesehen, dass es in JS möglich ist, habe in dem Bereich aber leider keinerlei erfahrungen.
Danke schonmal :slight_smile:

Wo hast du das in JS denn gesehen? Dann kann ich dir sagen welches PHP-Framework dir ähnliche Features bietet. Aber generell geht das.

Eine reine Template-Engine ist Smarty. Zend z.B. ist ein ganzes MVC-Framework. Da kannst du das eingebaute Template-System verwenden oder ein anderes. Ändert überhaupt nichts an deiner Logik und den Daten die du verarbeitest.

Twig ist auch ein nettes Templateframework

[QUOTE=schlingel]Wo hast du das in JS denn gesehen? Dann kann ich dir sagen welches PHP-Framework dir ähnliche Features bietet. Aber generell geht das.

Eine reine Template-Engine ist Smarty. Zend z.B. ist ein ganzes MVC-Framework. Da kannst du das eingebaute Template-System verwenden oder ein anderes. Ändert überhaupt nichts an deiner Logik und den Daten die du verarbeitest.[/QUOTE]

Müsst ich nochmal raussuchen, habe momentan eine einfache, aber an sich total bescheidene Lösung für das Problem -.-

Edit:
Hab aktuell 2 CSS Datein, die jenachdem, welches Theme der Benutzer auswählt geladen werden

Du möchtest also die exakt selbe Seite auf unterschiedliche Weise in Szene setzen? Theoretisch kann man das über das Einbinden verschiedener CSS-Styles machen. Zwei hast du ja schon. Ist die Lösung nichts für dich? Ich find das recht flexibel so.

Mit mehreren CSS Datein ist genau das was ich möchte, aber wie ich das umgesetzt habe (über Datenbank wo User das Design speichern können etc.) find ich nicht so schön, da nicht registriete Benutzer dann nur auf das Standard-Design zugreifen können

Warum nutzt du nicht die Session, um den Style zu speichern?

Wenn ich nehme:
$_SESSION['theme'] = $_POST['style'];

Funktioniert das auf der Seite super, sobald ich aber auf eine andere Seite wechsel, lädt er wieder das Standard-Design :frowning:

Dann hast du deine Session wohl nicht richtig initialisiert.
http://php.net/session_start

[QUOTE=cmrudolph]Dann hast du deine Session wohl nicht richtig initialisiert.
http://php.net/session_start[/QUOTE]

Daran hatte ich gedacht, aber eine andere Zeile hatte ich vergessen
session_name('actSession');

Aso Edit:
Nun Funktionierts auch :slight_smile:

Von Template Engines ala Smarty würde ich abraten. Weil eine Scriptsprache innerhalb einer nicht kompilierendne Sprache ist nicht die glücklichste Wahl.

Und kleine IF/Foreach/echo Anweisungen kriegt ein Designer auch noch hin :wink:

Aber das ist letzten Endes auch eine Frage der Machbarkeit innerhalb der Firma und des Projekts.

Von Template Engines ala Smarty würde ich abraten. Weil eine Scriptsprache innerhalb einer nicht kompilierendne Sprache ist nicht die glücklichste Wahl.

Die Frage stellt sich sowieso nicht da anscheinend eine CSS-Weiche schon genügt. Ist zwar nicht sehr flexibel aber IMO die sauberste Möglichkeit.

Die Umsetzung auf blog.fefe.de finde ich recht gelungen.

Mit einem einfachen Get Request wird einfach der Pfad zu einer CSS datei gesetzt und in einem Cookie abgelegt.
blog.fefe.de/?css=PFAD_ZUR_CSS

Da die Seite eh gerendert wird, wird einfach der Wert aus diesem Request/Cookie genommen und im HTML als Stylesheet gesetzt.

Das schöne daran ist, dass man zwischen auf der Seite bereitgestellten css-Dateien und auf anderen Servern gehosteten Dateien auswählen kann.

csszengarden.com macht es auch ähnlich.

Hätte ich generell kein gutes Gefühl bei, per URL-Aufruf einfach mal so Sachen von anderen Seiten nachzuladen.

[QUOTE=Unregistered]
Mit einem einfachen Get Request wird einfach der Pfad zu einer CSS datei gesetzt und in einem Cookie abgelegt.
blog.fefe.de/?css=PFAD_ZUR_CSS[/QUOTE]

Ganz böse Sache. Je nachdem wie er es macht öffnet das viele Türen. Hab es jetzt nur mit einem CSS von einer x-beliebigen Seite probiert … das wurde angenommen.

Wo ist das Problem?

Du wählst ja letztendlich die css Datei aus?

Du kannst auch eine eigene css nehmen und auf dem localhost bereitstellen. Es gibt auch Stylesheets die auf der Seite angeboten werden, welche dann mit einem relativen Pfad referenziert werden.

Es wird ja nichts nachgeladen in dem Sinne. Du wählst lediglich aus, wo die CSS Datei liegt. Der Link dazu wird in HTML eingebettet.

Wenn du dann allerdings eine CSS von NICHT_VERTRAUENSWÜRDIGE_STELLE einträgst, dann schießt du dir natürlich selbst in den Fuß.

Für den eigenen Server ist sowas nicht gefährlich, aber man kann sich zur Plattform machen. Angenommen ich generiere einen Link zu Fefes Blog und verteile ihn über irgendwelche Netzwerke, binde eine eigene CSS über die URL ein. Dann habe ich schon mal die Möglichkeit, eigene Grafiken einzubinden. Diese eigenen Grafiken kann ich im Hintergrund mit einem PHP-Skript generieren und dabei nebenher mal IP, Betriebssystem und Browserversion abfischen, um mal im kleinen Rahmen zu denken. Wenn ich so etwas mit einer eigenen Seite mache interessiert es keine Sau, aber bei einem Blog, der (aus unerfindlichen Gründen) so eine Reichweite hat, wird eventuell dieser Link weiterverbreitet. Oder ich mache einfach einen “My Little Pony” Skin für die Seite und verbreite ihn, weil das ja lustig ist.

Siehst du das Bild in Gossis Signatur? Dynamisch generiert von fraglicher Seriösität.

Wenn du den Link verteilst, dann kannst du Schadcode auch gleich auf deiner Seite verteilen. Das hat für den User Null-Sicherheitsrelevanz.
Dann kannst du auch gleich auf eine Schadcodeseite verlinken und zur Tarnung einen anderen Title setzen.

Ja, das sehe ich. Und da gebe ich dir auch recht, das ist in etwa das Selbe.

Wenn du den Link verteilst, dann kannst du Schadcode auch gleich auf deiner Seite verteilen. Das hat für den User Null-Sicherheitsrelevanz.
Dann kannst du auch gleich auf eine Schadcodeseite verlinken und zur Tarnung einen anderen Title setzen.

Mal davon abgesehen, dass ich dann weniger Verbreitung erreichen könnte: Klar kann ich das. Mit ein bisschen krimineller Energie findet man viele Wege um Usern Schadcode unterzuschieben oder Daten abzugreifen. Aber wenn ich als Webseitenbetreiber die Wahl habe, ob ich meine Leser so einer Situation aussetzen möchte oder nicht, dann entscheide ich mich doch lieber für die erste Variante. Ich brauche ja nicht sagen: „Im Internet gibt es 1000 Möglichkeiten so etwas untergeschoben zu kriegen, dann kann es mir ja egal sein“. Wenn beim Client Inhalte von anderen Quellen geladen werden, reagiere ich persönlich allergisch.

Siehst du das Bild in Gossis Signatur?

Nope :wink: Ich sehe keine Signaturbilder und hab standardmässig Ghostery laufen was viel so Zeugs einfach blockt.

Wenn du den Link verteilst, dann kannst du Schadcode auch gleich auf deiner Seite verteilen. Das hat für den User Null-Sicherheitsrelevanz.

Ist aber leichter eine bekannte Seite herzunehmen die viel Traffic hat und deren Ursprung nicht gespoofed werden muss als eine eigene. Ich persönlich scheue auch vor solchen Lösungen zurück da man

  1. Nicht wissen kann ob man über eine nicht bekannte Browser-Schwachstelle die Einfuhr von Schadcode über die eigene Domain zulässt.
  2. Man das wirklich sehr, sehr gründlich testen muss wenn in seiner Seite Code von Dritten einbaut. (Fefe hat das übrigens gemacht. So zerstört man das Layout nicht wenn man z.B. Fefes Blog aufruft.)

Nummer 2 ist klarerweise die eigentliche Bedrohung. Das bedeutet für ein Minimal-Feature muss man extra testen. Nicht so meins.