[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перезагрузка сессиии с новыми параметрами
Remka
Всем привет.

Сразу к сути: Есть форма авторизации (Ajax) 2 поля Логин, Пароль. Жмем на кнопку отправляем Ajax запрос получаем JSON ответ. И если пришел статус true отправляем еще один Ajax на получение шаблона личного кабинета.

В целом все понятно и просто.
Но по умолчанию пользователь имеет гостевую сессию вот с такими данными:

$_SESSION = array(
'login' => 'guest',
'password' => 'guest',
'access' => '0'
);

Гостевая сессия по умолчанию не ограничена таймаутом.


Если пользователь вводит правильные Логин и Пароль то мне нужно поставить нужный мне таймаут и поменять логин, пароль и уровень доступа сессии.

Подскажите есть ли способы записи новых параметров и нового таймаута сессии без ее завершения? если нет то как мне лучше реализовать завершение гостевой и старт новой (пользовательской) сессии?
AllesKlar
Чегойт проигнорировали хлопца? :)

Ремка, друг! Начнем с твоего кода:
$_SESSION = array(
'login' => 'guest',
'password' => 'guest',
'access' => '0'
);


Ты полностью переписал сессию. Т.е. все данные, которые хранились в сессии ДО этого куска кода будут уничтожены. Так нельзя.
Долно быть что-то типа:
$_SESSION['user'] = array(
'login' => 'guest',
'password' => 'guest',
'access' => '0'
);


Дальше все просто.
Вот тот скрипт, который ты вызываешь аяксом, в случае успешной авторизации пользователя, и прописывает новые значения в сессию.

Т.е. нечто такое:
// не забываем про session_start();
session_start();
$_SESSION['user'] = array(
'login' => $user_name,
'password' => $user_pass,
'access' => 1
);


И на последок немного занудства :)
А ты для чего в сессии хранишь логин и пароль? Тебе это не нужно, эти данные нужны только скрипту, который проверяет авторизацию, и только один раз , чтобы запрос к базе отправить.
Тебе достаточно в сессии хранить id пользователя.
Более того, ты даже гостя можешь им идентифицировать. Скажем, у гостя будет id == 0

Таймаут сессии - это дело такое ненадежное.. там столько переплетений с настройками веб-сервера. Если тебе по каким-то причинам нужно "выкинуть" пользователя через определенное время, то лучше храни в базе время последнего логина и с ним сравнивай. Время вышло - гудбай на новый логин. Только вот зачем....

И вот еще что:
Цитата
И если пришел статус true отправляем еще один Ajax на получение шаблона личного кабинета.

Смысл в двух запросах? Что, в один все не помещается? Авторизировались - прилетел шаблон, не авторизировались, не прилетел шаблон.

_____________
[продано копирайтерам]
AllesKlar
Как измельчали диванные войска laugh.gif


_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.