|
|
|
|
|
для: victoor
(12.05.2007 в 21:28)
| | Но если пользователь просто закрыл браузер (случайно, или специально, или камп висанул и пришлось его жестко перезагружать...) то пользователь не может зайти, пока сессия не завершиться (минут 10-20, наверно..., или сколько там сессия по умолчанию живет?)
>Тоже не то...
хм... тоже верно :) надо еще подумать... | |
|
|
|
|
|
|
|
для: Angel_Hranitel
(12.05.2007 в 21:15)
| | >Так а такой пример... Я сижу на сайте, меня взломали и заходят... Меня выкидывает, а взломщик заходит... Я думаю не правильно!
Но потом и владелец может выкинуть взломщика ;-)
>Другой момент, сидит взломщик и я захожу, а меня не пускает... Уже говорит о том что меня взломали... Дело конечно ваше, но думаю что так будет правильней...
Но если пользователь просто закрыл браузер (случайно, или специально, или камп висанул и пришлось его жестко перезагружать...) то пользователь не может зайти, пока сессия не завершиться (минут 10-20, наверно..., или сколько там сессия по умолчанию живет?)
Тоже не то... | |
|
|
|
|
|
|
|
для: Unkind
(12.05.2007 в 20:23)
| | Так а такой пример... Я сижу на сайте, меня взломали и заходят... Меня выкидывает, а взломщик заходит... Я думаю не правильно! Другой момент, сидит взломщик и я захожу, а меня не пускает... Уже говорит о том что меня взломали... Дело конечно ваше, но думаю что так будет правильней... | |
|
|
|
|
|
|
|
для: victoor
(12.05.2007 в 20:14)
| | Просто в таблице пользователей добавьте столбик "sid" и записывайте туда идентификатор сессии после логина. Перед обновлением поля "sid" ищите файл с сессией (стандартные сессии на PHP хранятся в директории для временных файлов с именем вида "sess_sid". Если найден - удаляйте. | |
|
|
|
|
|
|
|
для: Angel_Hranitel
(12.05.2007 в 19:26)
| | >А зачем принудительно пользователя выкидывать? Или имелось ввиду что второго не пускать? Как-то замудренно получается... :/
Второго - пускать, а первого - выкидывать. Чтобы одновременно не сидело 2 человека под одним логином. Первого не трогать, а второго не пускать не подходит, т.к. человек мог закрыть браузер и тогда он не сможет зайти все время существования сессии. | |
|
|
|
|
|
|
|
для: victoor
(12.05.2007 в 15:07)
| | А зачем принудительно пользователя выкидывать? Или имелось ввиду что второго не пускать? Как-то замудренно получается... :/ | |
|
|
|
|
|
|
| Здравствуйте!
Хочу сделать так, чтобы под одним логином нельзя было 2-м людям одновременно зайти. Проект, над которым я работаю, такой строгости не требует, но было бы интересно сделать...
Для этого хочу сделать в БД дополнительную таблицу, куда записываются id_сессии, id_пользователя, разная техническая информация, время последней активности и флаг на закрытие.
При авторизации пользователя проверяется, нету ли уже записи для этого пользователя в данной таблице, если нету - все нормально, добавляем запись о пользователе, пользователь входит. Если есть - в старой записи ставим флаг на закрытие, добавляем запись о новом пользователе и пользователь входит.
При переходе уже авторизированных пользователей по страницам проверяем эту таблицу для текущей сессии. Если флаг на закрытие не установлен - все нормально, обновляем время последней активности. Если установлен - выводим надпись "Извените, зафиксирован еще один вход под вашим логином, вы отключены", убиваем сессию, принудительно выводим пользователя, удаляем запись из таблицы сессий.
Удаление от старых записей можно привязать ко входу пользователя: при каждом входе любого пользователя из таблицы удаляются записи о всех пользователях, последняя активность которых была позднее, чем время жизни сессии.
Как вам такая схема?
Какие у нее могут быть плюсы, минусы и подводные камни?
Надеюсь на вашу помощь. | |
|
|
|
|