сесии или кукис

php MySQL Cookies авторизация sessions

сесии или кукис

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

У меня после успешной авторизации, в таблицу sessions добавляеться id пользователя, имя, IP, хеш сессии, и время авторизации, что бы сравнять с данными в сесии ну и давать возможность просматривать ту или иную страницу

Как после выхода пользователя не через "выход" его данные удалять с БД? что бы он там не висел вечность как авторизированный, а по истечению 5-10 минут автоматически был удален с БД.

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

Если с таких сталкивались, озвучьте пожалуйста, именно как реализовать в он-лайн проектах.

Примечание:
А если пользователь не будет проявлять активности? Он будет на сайте, но не будет открывать страницы, что тогда сделать? Не могу ж я взять и выкинуть его с сайта.

Ну или смысл спрятан глубже

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

Примечание:
SSL. это уже дополнительно, сейчас это не важно, Пока что нужно делать максимально эффективно програмными средствами изнутри

Примечание:
"никаких username, login, email в куке хранить нельзя."

по каким данных тогда искать/сравнивать сессию в БД->sessions? Только по хешу?
Ответы:
по крону, запускать скрипт, удаляющий записи с датой обновления старше 10 минут
а в движок добавить функционал: при получении юзером очя очередной страницы сайта - обновлять поле "дата обновления".
Нужно использовать временную куку (у которой время жизни нулевое). Эта кука будет удалена только после того, как пользователь закроет все страницы браузера, относящиеся к этому сайту). Сессии в БД привязать к этой куке. Соответственно, после того, как пользователь выйдет с сайта и кука будет удалена (либо пользователь будет проявлять достаточно долгую неактивность, скажем, сутки), все старые сессии можно будет смело удалять.
Почему сутки? Потому что за сутки не особо много сессий накопится и они в принципе не будут мешать работе сайта. Можно было бы и уменьшить таймаут, скажем, до часа. Но тогда как минимум каждые полчаса нужно будет через ajax подавать какой-нибудь небольшой запросик, который будет рефрешить время сессии и не давать ей удаляться, если страницы ещё открыты. Т.е. как бы эмуляция активности пользователя.
C точки зрения юзабилити лучше всего использовать куку с временем жизни в 1 месяц. Куку ставить как httponly, чтобы запретить доступ к ней через js и тем самым нейтрализовать всякие эксплойты. Ну и закодировать вручную куку не помешало бы (в идеале это должен быть просто идентификатор типа md5(random), никаких username, login, email в куке хранить нельзя.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.