2013-11-13 4 views
1

Я хочу узнать, как я могу проверить, вошел ли пользователь в систему, но если кто-то с теми же авторизациями входа пытается войти в систему, отправьте им сообщение, чтобы сказать, что пользователь уже зарегистрировался в другом месте.Codeigniter - если пользователь уже зарегистрирован

Так, например:

Пита - пиловочник с использованием Пита в качестве имени пользователя и pete1 в качестве пароля, но Pete дал свои детали к другу, чтобы использовать и его друг Дэйв пытается корейка с теми же деталями на В то же время ему необходимо отправить сообщение Dave о том, что кто-то уже зарегистрировался с этими подробностями.

Как это сделать, пожалуйста.

У меня уже есть is_logged_in функцию, которая проверить пользователь вошел в систему.

+0

Как вы узнали, не изменился ли пользователь быстро? Поскольку мы говорим на веб-сайтах, вы никогда не поддерживаете постоянное соединение, а вместо этого «Request -> Response». То, что вы ** могли ** делать, - это продолжать опрос сервера при входе в систему, а затем сказать «если последний опрос пользователей был менее 30 секунд назад, они определенно вошли в систему». – h2ooooooo

+0

Мне не нужна эта функция, но мой клиент, и, возможно, мне стоит вернуться к ним и объяснить, что на самом деле это не стоит делать на основе вашего объяснения. Спасибо h2oooooo –

+0

Вы также можете объяснить своему клиенту, что это будет делать следующее: 1) он будет генерировать намного больше трафика, потому что вам нужно было проводить опрос 2) это было бы неточно (что, если их компьютер застыл, или ваш сервер не сделал ответьте в течение 30 секунд). 3) Если ваш клиент говорит «им нужно выйти из системы», подумайте, кто-то перезагрузит их компьютер, удалив их файлы cookie и т. д. - как долго это займет время? Пользователь не смог бы войти в систему в течение этого времени даже на том же компьютере. – h2ooooooo

ответ

1

Вы должны «пользователь сессий» модель записано, зарегистрированным пользователям,

на пользователя войти, проверьте, если сессия существует «пользовательские сессии», если да отправить сообщение из «уже вошли в»

затем установить сеанс на стороне пользователя, затем добавить сеанс модели

на выходе из системы, уничтожить сек ession со стороны пользователя и от модели «пользователь сессий»


Это позволит же пользователю войти в систему из нескольких устройств, с уведомлением их. однако это может привести к проблеме наличия «домашнего устройства», из которого он обычно входит, из-за чего вы не спамете его с сообщениями «уже вошел в систему» ​​

1

Я сделал что-то очень близкое к этому Несколько лет назад, однако, я подошел немного по-другому. В основном я разрешал только один вход на одного пользователя и любой последующий вход в систему приводил к разрушению другого пользователя.

Чтобы заставить его работать таким образом, мне пришлось создать пользовательский диспетчер сеансов, чтобы сохранить имя пользователя пользователя с идентификатором сеанса в БД. Тогда все, что я сделал, это сделать поиск, чтобы узнать, был ли пользователь уже зарегистрирован, если они были тогда, я просто удалил сеанс БД.

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

Все, что вам нужно сделать, это расширить класс сеанса CodeIgniter и внести изменения, и это действительно не так сложно.

+0

У вас есть примеры, чтобы я мог видеть, как вы его достигли? –

0

Регистрация ваших сеансов в базе данных позволит вам отслеживать это. См. http://ellislab.com/codeigniter%20/user-guide/libraries/sessions.html

Поиск «Сохранение данных сеанса в базу данных» на странице.

После того, как сеансы хранятся в базе данных, вы можете проверить, зарегистрировано ли это имя пользователя. Оно действительно имеет оговорку: если пользователь не выходит из системы перед закрытием браузера, а сеанс не установлен на истечет корректно, он сообщит вам, что пользователь уже зарегистрирован, даже если он/она нет (на основе наличия данных сеанса).

0

Я решил это, проверив файлы cookie и установив конкретный файл cookie для пользователя.Если cookie сеанса пользователя не соответствует файлу cookie сеанса системы, они вытесняют пользователя, а новый пользователь получает контроль. Однако это может раздражать.

Смежные вопросы