Блин, надо было мне не выпендриваться, а сразу открытым текстом писать :-)
извините, я был неправ.
Действительно, стереотип пробить очень трудно. Это очень распространенная ошибка.
Дело не в глобалсах и не в способе. А именно в синтаксисе.
Непривычном.
Я так думаю, что частично из-за дурного синтаксиса функций session_*, как раз и ввели этот массив.
потому, что:
параметром этих функций является не переменная, а СТРОКА, содержащая имя переменной.
т.е. не session_is_registered($var), а session_is_registered("var") !
Более того, я думаю, что все эти ограничения про разные способы обращения действуют в пределах ОДНОГО скрипта.
Т.е., если ты в одном скрипте написал $_SESSION[\'a\']=1;
то в другом у тебя вполне сработает session_is_registered("a") без каких бы то ни было ограничений. Ну, кроме накладываемых регистер глобалс, естественно.
И последнее. Самая первая проверка - isset() у спаркса, естественно, не работала, поскольку переменные, зарегистрированные в сессии, ничем не отличаются от обычных и их надо так же специально объявлять глобальными.
т.е.
global $X;
if (isset($X))
вернет себе спокойно труй.