2009-07-08 2 views
0

В header.php у меня есть:начала сеанса

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

и далее вниз у меня есть:

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

Основном есть выпадающее окно, в котором пользователь выбирает тему сайта, это устанавливает значение $ _GET [тема], и я хотел бы, чтобы выбор запоминался, однако всякий раз, когда изменяется страница, тема сбрасывается до значения по умолчанию.

header.php - это заголовочный файл для каждой страницы - не знаете, если это проблема.

Если print_r ($ _ SESSION), то правильное значение отображается после Array [theme] =>, но если я нажму на другую страницу, то Array [theme] => сбрасывается в пустую.

Пожалуйста, помогите!

ответ

9

То, что вы, вероятно, предназначен в вашем header.php было что-то вроде этого

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']; 
} 

Это выглядит как настраивали $ _SESSION [ «тема»], независимо от того, является ли он в массиве $ _GET.

Также обратите внимание, что я использовал кавычки вокруг индексов массива - избегайте использования для этого простых слов.

+0

По правильной дорожке - я думаю, однако print_r просто показывает Array() – 2009-07-08 10:58:23

+0

Добавьте весь текст header.php к вопросу. –

+0

+1 для добавления индексов массива. –

0

Неинтуитивно, вы должны начать сеанс на странице КАЖДОГО PHP, на которой вы его используете. Надеюсь, это поможет.