Итак, я занимаюсь некоторым обслуживанием на PHP-сайте, использующем переменные $_SESSION
. Я начал видеть очень странное поведение, и после нескольких часов отладки я просто понял это. В качестве примера, предположим, что у меня есть сеанса переменной установки, как это:Ярлыки переменных PHP Session Variable?
$_SESSION['user']['id'] = 123;
$_SESSION['user']['firstname'] = 'John';
$_SESSION['user']['lastname'] = 'Doe';
В какой-то момент в сценарии, вызов таблицы MySQL производится с помощью некоторых классов Zend:
$sql = "SELECT whatever FROM table";
$user = $db->fetchRow($sql);
сейчас вот где начинается странность ... После того, как этот вызов базы данных сделан, мое значение $_SESSION['user']
все внезапно изменилось как объект, который извлекается из вызова базы данных ...
В принципе: $_SESSION['user']
- это теперь то же, что и объект, который был извлечен используя метод fetchRow DB, который должен был храниться в переменной $user
. Я никогда не видел этого раньше.
Единственное, что я могу понять, это то, что имя переменной $user
такое же, как имя ключа массива $_SESSION['user']
, действующее как ярлык или что-то в этом роде.
Это какие-то странные быстрые вызовы PHP-сессии, о которых я никогда не слышал раньше?
На боковой ноте я знаю, что доступ к $_SESSION
vars напрямую не является лучшей практикой. Я не создавал этот сайт. Моя задача - исправить некоторые вещи и добавить некоторые функции.
ОБНОВЛЕНИЕ: Конечно, register_globals включен. Спасибо за помощь. Неудивительно, что я видел такое странное поведение.