[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрет двух сессий
Quieteroks
Здравствуйте.

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

Пока вижу это так, если идентификатор в базе != идентификатору сессии при авторизации, то:
1. уничтожаем старую сессию (но как?)
2. закрываем текущую сессию, записываем в куки старую сессию (не безопасно?)

Кто и как боролся и вообще боролся ли?
Подскажите чего нить.
FatCat
Цитата (Quieteroks @ 23.01.2013 - 22:52)
Кто и как боролся и вообще боролся ли?

Боролся. Не абсолютно, но все же:
В сессию пишется и айдишник пользователя, и айпишник.
При заходе пользователя (ID>0) ищется сессия для айдишника пользователя или гостевая (ID=0) с тем же айпишником. Если найдена, апдейт сессии, если нет - создание.
При заходе гостя (ID=0) ищется гостевая сессия с таким же айпишником. Если найдена, апдейт сессии, если нет - создание.

Таким образом всё ещё остается возможность дублирования сессий, если одна сессия от авторизованного, а вторая с того же айпишника гостевая. Но зато это исключает авторизацию в чужую сессию гостя в случае совпадения айпишника.
Авторизованным допускается иметь несколько сессий с одного айпишника: например несколько сотрудников одного офиса одновременно с разных компьютеров через один роутер не ввалятся в чужие сессии.

_____________
Бесплатному сыру в дырки не заглядывают...
Quieteroks
FatCat
Хм... А если хостер мне не предоставит достоверной информации об ip адресе?
Грубо говоря все ip будут сервера хостера, а не пользователей.

Но в целом идея норм.
Как можно проверить существование сессии?
Их же сервер должен чистить, все может зависеть от сервера...
Где он их хранит и разрешит ли мне рыскать в папке с сессиями...
Xpund
Цитата (Quieteroks @ 24.01.2013 - 07:29)
FatCat
Хм... А если хостер мне не предоставит достоверной информации об ip адресе?
Грубо говоря все ip будут сервера хостера, а не пользователей.

Но в целом идея норм.
Как можно проверить существование сессии?
Их же сервер должен чистить, все может зависеть от сервера...
Где он их хранит и разрешит ли мне рыскать в папке с сессиями...

Выбирай нормального хостера)

А существование:
if(isset($_SESSION['id'])) - например


Да, если у хостера настроена чистка сессий, то чистит, если используешь vds, то скорее всего самому надо настраивать(cron)

Ну в ISPmanager точно можно, к сожалению нет возможности сказать в какой.
Но на одном уровне с папкой www точно могу сказать

_____________
минус, конечно, иногда полезен, но плюс мне нравиться больше :)
Женский журнал - Жена сказала раскрутить сайт любой ценой (Sorry)
Быстрый ответ:

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