Moin!
Wenn der Stil dann ausgewählt wird wird an die index.php der Wert der Variable $change_style weitergegeben, die dann wie folgt weiterverarbeitet wird:
if ( isset( $change_style ) ) {
$GLOBALS['style'] = $change_style;
}
AUA! AUTSCH! Das tut weh!
Gleich drei böse Punkte in nur drei Zeilen Code (die man eigentlich auch nur als eine Zeile zählen könnte).
Erstens: Woher kommt $change_style? Doch nicht etwa aus dem URL-Parameter? Dann informiere dich bitte über register_globals, und warum man diese Option besser ausschaltet, und auch nicht mehr davon ausgehen sollte, dass sie eingeschaltet ist: http://www.dclp-faq.de/q/q-formular-register-globals.html
Zweitens: Du willst eine globale Variable benutzen - deshalb $GLOBALS. Dein Code deutet aber extrem darauf hin, dass du keinen Schimmer hast, was $GLOBALS macht. Lies: http://www.dclp-faq.de/q/q-sicherheit-global.html
Drittens: $GLOBALS ist das Array mit allen globalen Variablen drin. Dein Code ist gleichbedeutend mit diesem hier:
$style = $change_style;
Und das sieht doch ziemlich idiotisch aus, einer existierenden Variablen den Inhalt einer anderen existierenden Variablen zuzuweisen - ohne deren Inhalt irgendwie zu bearbeiten.
Lies: http://www.dclp-faq.de/q/q-php-variablen.html
Wenn ich dann aber in meiner Navigationsleiste auf einen beliebigen Link*** klicke geht der Wert der $GLOBALS-Variable verloren. Somit sind auch keine Formatierungsanweisungen mehr da.
Logisch. Weil alle Variablen gelöscht werden, wenn das eine Skript beendet ist.
Was mache ich falsch?
Du mußt entweder an alle Links den URL-Parameter mit dem gewählten Stylesheet dranhängen. Dann kannst du diese Information mit $_GET['change_style'] abfragen.
Oder du startest eine Session. Dann kannst du das gewählte Stylesheet in $_SESSION speichern. Diese Variable wird wiederhergestellt, wenn weitere Skripte aufgerufen werden - allerdings erst durch den Befehl session_start().
Lies: http://www.dclp-faq.de/ch/ch-version4_session.html (am besten alles davon).
- Sven Rautenberg
Die SelfHTML-Developer sagen Dankeschön für aktuell 21335,05 Euro Spendengelder!