2010-09-10 3 views
0

У меня есть этот небольшой скрипт:

<?php 
session_start(); 

$var = array(); 
$var['key'] = 'Var -> Key'; 

if ($_GET['set']) { 
    $_SESSION = array(); 
    $_SESSION['var'] = 'Session -> Var'; 
} 
print_r($_SESSION); 
?> 

Я бы ожидать, что вернуть это, для набора = 0 и положим = 1:

Array 
(
    [var] => Session -> Var 
) 

Однако он возвращает это для набора = 0 (после набора = 1, конечно):

Array 
(
    [var] => Array 
     (
      [key] => Var -> Key 
     ) 

) 

Взгляните yourselfe здесь: http://dev.gruppenunterkuenfte.de/index_test.php?set=1

Какие швы произойдут, так что $ _SESSION ['var'] заменяется на $ var. Но только после загрузки следующей страницы.

Любая идея, почему?

Я могу переключить свою версию PHP в интерфейс администратора моего хостера, и я попробовал 5.2.11, 5.3.2 и 4.4.8.

Является ли параметр, который я могу изменить в PHP, поэтому он не будет перезаписывать переменные сеанса? Причина У меня нет этой проблемы на другом сервере.

Там швы должны быть какой-то настройки, чтобы PHP записывал $ var в $ _SESSION ['var'], если $ _SESSION ['var'] определен.

ответ

3

Выключите register_globals опцию

+0

Спасибо, что помогли .. Это было на самом деле первая вещь, которую я проверил. Я отключил его в интерфейсе хостеров, но не проверял с помощью phpinfo(): -/Теперь я проверил и понял, что он не отключен. Спасибо за быструю помощь – JochenJung

1

ничего странного, это документированное поведение.
просто включите register_globals от

Смежные вопросы