Сессии и register_globals
1594 сообщения
#15 лет назад
Вылезла следующая ошибка:Цитата:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
Google'ние показало, что проблема в том, что register_global=off и индексы массива $_SESSION совпадают с именами других переменных. (Информация не подтверждённая, не знаю верить или нет)
Соответственно, register_globals включать не хочу, а с сессиями как то работать надо (В принципе, всё работает, и если отключить вывод Warning, то всё замечательно... Но хотелось бы разобраться в проблеме...)
Заранее всем спасибо за ответы! =)
649 сообщений
#15 лет назад
Вы то нагуглили, но не смогли воспользоваться нагугленной информацией.Цитата:
Следующей по распространенности проблемой при работе с сессиями является тяжелое наследие register_globals. НЕ давайте переменным скрипта имена, совпадающие с индексами массива $_SESSION!
При register_globals=on значения будут перезаписывать друг друга, и вы запутаетесь.
А при register_globals=off появится другая ошибка: "Your script possibly relies on a session side-effect which existed until PHP 4.2.3.", в случае, если в скрипте есть переменная сессии не имеющая значения, и глобальная переменная с тем же именем. Чтобы от неё избавиться, надо всегда инициализировать переменные перед использованием (или хотя бы проверять на существование) и не давать глобальным переменным имена, совпадающие с индексами массива $_SESSION.
ссылка
1594 сообщения
#15 лет назад
Под "глобальными переменными", я так понимаю, имеются ввиду $_COOKIE, $_GET, $_POST? Индексы этих массивов не должны совпадать с индексами $_SESSION?
1594 сообщения
#15 лет назад
Цитата ("neadekvat"):Ага, заснуть голову в песок - хороший выход.
Вот именно поэтому и ищу способ решения проблемы, а не способ от неё спрятаться
Цитата ("neadekvat"):
Не надо называть индексы массива $_SESSION и переменные одним именем - пофиг, что ошибки вылазят, самому ведь проще, когда у несвязанных логически областей памяти разные имена.
Да в том то и дело, что у меня зачастую даже значения там одинаковые.
Например, $_COOKIE и $_SESSION
И там и там - ID пользователя. Только вопрос в том, что иногда $_COOKIE может и не быть
Когда переименовал переменные - всё ОК, спасибо.

