Сессии. Непонятки.

Вадим

Guest
Сессии. Непонятки.

Есть простая задача. Аутентификация пользователся, но есть непонятная мне проблема, помогите:

1. Входим и логинимся.
2. Попадаем на main.php.

session_start ();
include ( "_obj/usr.php" );

$usr = new n_usr();
$usr->init();

Соответственно $usr->init(); проверяет пользователся на "вшивость" и если все хорошо то создает массив

$_SESSION["user_id"] = $usr_data["user_id"]; // id пользователя
$_SESSION["user_ip"] = get_ip (); // ip пользователя
$_SESSION["user_name"] = $usr_data["username"]; // имя пользователя
$_SESSION["user_group"] = $usr_data["user_group"]; // группа в которой находится пользователь
$_SESSION["user_access"] = array(); // настройки доступа пользвателя
$_SESSION["user_start_time"] = time("U"); // время входа пользователя
$_SESSION["user_sess_time"] = time("U"); // время текущее время
$_SESSION["user_auth"] = true; // индекс авторизации
$_SESSION["user_sid"] = session_id(); // индекс авторизации

Но вот незадача, таким макаром его нигде после логина не видно, т.е. все известные способы проверить наличие сессионных переменных и их значений не помогают. При это если просто вывести из файла main.php данный массив, то все прекрасно видно, но в следующих файлах его нет.

если же я определяю данный массив непосредственно в main.php а не в классе, то он везде считывается далше вездеь по ходу сессии.

Мож я чо не так делаю, плз поможите второй день мучаюсь. :(

P.S. Мануал http://phpfaq.ru/sessions читал.
 

Фанат

oncle terrible
Команда форума
Судя по всему, ты считаешь, что вина лежит на том, что переменные определяются внутри класса.
Сейчас я научу тебя решать такие проблемы.
1. пишешь тестовый код.
код состоит из одного класса в котором записывается одна переменная сессии. То есть, код умещается в 10 строчек.
2. Тестируешь этот код и убеждаешься, что вс работает нормально.
2а. Если что-то работает не так - показываешь здесь этот полностью законченный и работоспособный код в 10 строчек, чтобы тебе указали на ошибку. Код заработает.
3. После этого лезешь в свой скрипт, и смотришь - где ты в своём коде, своими руками, обнуляешь переменные сессии.
 

Вадим

Guest
Огромное спасибо за советы, и вправду что-то было не так (все таки в тему).
respect оч. адекватно.

Но все таки есть непонятки (не по сессиям). А так кривовато но вроде разобрался.
 

Фанат

oncle terrible
Команда форума
Если есть непонятки - спрашивай.
Просто всегда имей в виду, что ответить можно всегда только на конкретный вопрос - не важно, сам ты себе будешь отвечать, или на форуме.
А конкретный вопрос - это вопрос, из которого исключены ВСЕ посторонние влияния.

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

Вадим

Guest
Вот кстати я понял в чем заключалась моя непонятка.

Если внутри класса править $_SESSION при этом включив строку вначале
global $_SESSION;
то и получается фигня, если же ее убрать то все замечательно работает.

Соответственно. это так и надо или просто опять что не так с головой (у меня).

Это тогда получается, если с global $_SESSION то функция создает глобальный массив и получается херня, если же без оной, то она обращется непосредственно к серверным переменным. Я прав или как?
 

Фанат

oncle terrible
Команда форума
не знаю.
во-первых, globals $_SESSION; разве не вызывает парсе еррор?
во-вторых, этого писать вовсе не нужно
 

Вадим

Guest
не ерроров никаких не было и знать я об этом не знал.

Короч всем спасибо. :)
 

Фанат

oncle terrible
Команда форума
короч писать надо global - без s на конце
а для $_SESSION и вовсе не надо - этот массив суперглобальный и так.
 
Сверху