Godwarlock
8.11.2014 - 21:31
У меня есть окно авторизованного пользователя где указаны его данные вытаскиваемые из бд. Суть проблемы состоит в том, что я могу зайти на аккаунт пользователя с любой страницы браузера, то есть, через каждую вкладку, при авторизации пользователя, открывается страница с его данными и таким образом я могу с любого компьютера производить действия на одном аккаунте. Собственно вопрос, как выбить предыдущего зашедшего пользователя со страницы с его данными и авторизовать только того, кто только что авторизовался? Есть ли какой-нибудь наиболее простой способ/пример?
Ramzil_Nixon
8.11.2014 - 21:42
Godwarlock, если честно я ничего не понял о том что ты хочешь сделать
_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...
при авторизации пиши в БД id сессии(как вариант), а на странице проверяй его. Если сессии не совпадают - разлогинивай пользователя
AllesKlar
8.11.2014 - 21:56
Цитата |
я могу зайти на аккаунт пользователя с любой страницы браузера |
и
Цитата |
таким образом я могу с любого компьютера производить действия на одном аккаунте |
Это разные вещи.
То что пользователь после авторизации видит себя на любых вкладках браузера - это логично, почему должно быть по-другому?
А вот если перейти по ссылке редактирования профиля без авторизации на любом компьютере, и попасть в редактирование этого профиля, то да - проблема безопасности.
Уточни свою ситуацию.
rooor
Цитата |
Если сессии не совпадают - разлогинивай пользователя |
Это возможно? Хочу пример.
_____________
[продано копирайтерам]
Ramzil_Nixon
8.11.2014 - 22:04
Цитата (AllesKlar @ 8.11.2014 - 17:56) |
Это возможно? Хочу пример. |
Я бы тоже не отказался от примера
_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...
если только хранить сессию в БД последнего логина. и проверять информацию при каждом действии.
AllesKlar
8.11.2014 - 22:16
Цитата |
если только хранить сессию в БД последнего логина. и проверять информацию при каждом действии. |
Это еще что?
на лицо криво-написанный механизм авторизации, зачем сессию еще в базу пихать? Она уникальна для каждого нового открытия браузера.
Браузер закрыли, открыли - всё, новая сессия.
_____________
[продано копирайтерам]
это как пример для блокировки оставленного аккаунта, если ты зашел с другого браузера/компьютера.
у меня нет такой авторизации
AllesKlar
8.11.2014 - 22:25
если ты зашел с другого браузера/компьютера, то уже сессия будет другая.
Карочи, ждем ТС и не ссоримся

А то пришел, смуту внес, понимаешь, и в кусты.
_____________
[продано копирайтерам]
Godwarlock
9.11.2014 - 01:14
Мне просто интересна работа сессий или куки. Если сессию, то её надо передавать каждому скрипту или в каком виде она должна быть реализована. Читал что можно типо кодировать сессию и в бд её пихать, точнее не сессию, а хеш, а потом при новой авторизации сверять хешы из бд и с новой попыткой авторизоваться, если они не совпадают, то вылезает ошибка. И каким образом потом удалять из бд хеш, после того как пользователь покинул страницу, чтобы он заново смог войти. И как вообще рандомно создавать символы этоого хеша и передавать его в бд)
AllesKlar
9.11.2014 - 01:19
GodwarlockЭто ж ты где такого бреда начитался?
Вот, почитай и не забивай голову глупостями.
http://phpfaq.ru/sessions
_____________
[продано копирайтерам]
Ясно чего тс хотел, чтобы с разных компов нельзя было в аккаунт заползти после авторизации.
В БД создаем доп поле например latest_session и при каждой авторизации делаем запрос UPDATE этого поля куда пишем id сессии и сверяем этот id при каждом запросе, после авторизации, если id сменился, потому что с другого компа кто-то авторизовался, а значит произошел UPDATE latest_session, в этом случае выкидываем пользователю форму авторизации.
Godwarlock
9.11.2014 - 02:27
I++
Это понятно, а как тогда обнулить поле latest_session, после того как пользователь вышел из системы по нажатию на кнопку или когда он просто покинул страницу?
Зачем его обнулять? Каждый раз при логине это поле обновлять и сверять с текущей сессией. Если текущая сессия != latest_session, то выдать страницу с просьбой войти в аккаунт. Следить за тем, вышел ли пользователь или все еще сидит, всего лишь для ограничения входа с разных компов не требуется. Если нужно смотреть онлайн ли сейчас пользователь или нет, добавляется поле timestamp и смотрится например, обновлял ли пользователь страницу в последние 10 минут например или нет, если не обновлял, то другим участникам показывается оффлайн, например как тут на форуме, тут отслеживается активность по таймштампу, если таймштам не обновлялся болье N минут, значит пользователь уполз с форума.
Godwarlock
9.11.2014 - 14:41
I++
А как получить id сессии?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.