[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбить пользователя со страницы
Страницы: 1, 2
Godwarlock
У меня есть окно авторизованного пользователя где указаны его данные вытаскиваемые из бд. Суть проблемы состоит в том, что я могу зайти на аккаунт пользователя с любой страницы браузера, то есть, через каждую вкладку, при авторизации пользователя, открывается страница с его данными и таким образом я могу с любого компьютера производить действия на одном аккаунте. Собственно вопрос, как выбить предыдущего зашедшего пользователя со страницы с его данными и авторизовать только того, кто только что авторизовался? Есть ли какой-нибудь наиболее простой способ/пример?
Ramzil_Nixon
Godwarlock, если честно я ничего не понял о том что ты хочешь сделать

_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
rooor
при авторизации пиши в БД id сессии(как вариант), а на странице проверяй его. Если сессии не совпадают - разлогинивай пользователя
AllesKlar
Цитата
я могу зайти на аккаунт пользователя с любой страницы браузера

и
Цитата
таким образом я могу с любого компьютера производить действия на одном аккаунте

Это разные вещи.
То что пользователь после авторизации видит себя на любых вкладках браузера - это логично, почему должно быть по-другому?

А вот если перейти по ссылке редактирования профиля без авторизации на любом компьютере, и попасть в редактирование этого профиля, то да - проблема безопасности.

Уточни свою ситуацию.


rooor
Цитата
Если сессии не совпадают - разлогинивай пользователя


Это возможно? Хочу пример.

_____________
[продано копирайтерам]
Ramzil_Nixon
Цитата (AllesKlar @ 8.11.2014 - 17:56)
Это возможно? Хочу пример.


Я бы тоже не отказался от примера

_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Kusss
если только хранить сессию в БД последнего логина. и проверять информацию при каждом действии.
AllesKlar
Цитата
если только хранить сессию в БД последнего логина. и проверять информацию при каждом действии.

Это еще что?
на лицо криво-написанный механизм авторизации, зачем сессию еще в базу пихать? Она уникальна для каждого нового открытия браузера.
Браузер закрыли, открыли - всё, новая сессия.

_____________
[продано копирайтерам]
Kusss
это как пример для блокировки оставленного аккаунта, если ты зашел с другого браузера/компьютера.
у меня нет такой авторизации
AllesKlar
если ты зашел с другого браузера/компьютера, то уже сессия будет другая.
Карочи, ждем ТС и не ссоримся smile.gif А то пришел, смуту внес, понимаешь, и в кусты.

_____________
[продано копирайтерам]
Godwarlock
Мне просто интересна работа сессий или куки. Если сессию, то её надо передавать каждому скрипту или в каком виде она должна быть реализована. Читал что можно типо кодировать сессию и в бд её пихать, точнее не сессию, а хеш, а потом при новой авторизации сверять хешы из бд и с новой попыткой авторизоваться, если они не совпадают, то вылезает ошибка. И каким образом потом удалять из бд хеш, после того как пользователь покинул страницу, чтобы он заново смог войти. И как вообще рандомно создавать символы этоого хеша и передавать его в бд)
AllesKlar
Godwarlock
Это ж ты где такого бреда начитался?
Вот, почитай и не забивай голову глупостями. http://phpfaq.ru/sessions

_____________
[продано копирайтерам]
I++
Ясно чего тс хотел, чтобы с разных компов нельзя было в аккаунт заползти после авторизации.

В БД создаем доп поле например latest_session и при каждой авторизации делаем запрос UPDATE этого поля куда пишем id сессии и сверяем этот id при каждом запросе, после авторизации, если id сменился, потому что с другого компа кто-то авторизовался, а значит произошел UPDATE latest_session, в этом случае выкидываем пользователю форму авторизации.
Godwarlock
I++
Это понятно, а как тогда обнулить поле latest_session, после того как пользователь вышел из системы по нажатию на кнопку или когда он просто покинул страницу?
I++
Зачем его обнулять? Каждый раз при логине это поле обновлять и сверять с текущей сессией. Если текущая сессия != latest_session, то выдать страницу с просьбой войти в аккаунт. Следить за тем, вышел ли пользователь или все еще сидит, всего лишь для ограничения входа с разных компов не требуется. Если нужно смотреть онлайн ли сейчас пользователь или нет, добавляется поле timestamp и смотрится например, обновлял ли пользователь страницу в последние 10 минут например или нет, если не обновлял, то другим участникам показывается оффлайн, например как тут на форуме, тут отслеживается активность по таймштампу, если таймштам не обновлялся болье N минут, значит пользователь уполз с форума.
Godwarlock
I++
А как получить id сессии?
Быстрый ответ:

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