2009-07-08 6 views
0

In header.php ich habe:Session starten

<?php 
if(!isset($_SESSION)) 
{ 
session_start(); 
} 
?> 

und weiter unten die ich habe:

$_SESSION[theme] = $_GET[theme]; 

Basicly ein Drop-Down-Box gibt es, wo der Benutzer die Website Thema auswählt, setzt dies die Wert von $ _GET [Thema] und ich möchte, dass die Auswahl gespeichert wird, aber wenn die Seite geändert wird, wird das Thema auf Standard zurückgesetzt.

header.php ist die Header-Datei für jede Seite - nicht wissen, ob dies das Problem ist.

Wenn print_r ($ _ SESSION) dann wird der richtige Wert nach Array [Thema] => angezeigt, aber wenn ich auf eine andere Seite klicke, wird Array [Thema] => auf leer zurückgesetzt.

Bitte helfen Sie mir!

Antwort

9

Was Sie wahrscheinlich in Ihrem header.php gedacht war so etwas wie dies

session_start(); 

//initialise new session 
if (!isset($_SESSION['theme'])) 
{ 
    $_SESSION['theme']='default theme'; 
} 

//change theme if user requested it 
if (isset($_GET['theme'])) 
{ 
    $_SESSION['theme'] = $_GET['theme']; 
} 

Es sieht aus wie $ _SESSION Einstellung wurde [ 'Thema'], unabhängig davon, ob es in dem $ _GET Array ist.

Beachten Sie auch, dass ich Zitate um die Array-Indizes verwendet habe - vermeiden Sie die Verwendung von barewords für diesen Zweck.

+0

Entlang der richtigen Spur - ich denke, aber die print_r zeigen nur Array() –

+0

Fügen Sie Ihre gesamte header.php zur Frage. –

+0

+1 zum Hinzufügen von Array-Indizes. –

0

Unnötig, Sie müssen die Sitzung auf jeder PHP-Seite, auf der Sie sie verwenden, starten. Ich hoffe, das hilft.