Отслеживание пользователей с помощью идентификатора сессии PHP, cookie + базы данных - PullRequest
3 голосов
/ 21 августа 2010

У меня есть небольшие сомнения относительно того, как следует обрабатывать сессии.

Сейчас у меня есть база данных MySQL, где в таблице «users» есть поле для session_id. Если NULL, пользователь не вошел в систему? Если значение совпадает со значением файла cookie PHPSESSID, то пользователь вошел в систему.

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

Ответы [ 3 ]

2 голосов
/ 22 августа 2010

Просто в дополнение к тому, что сказал Пекка, вы также можете включить в свою таблицу поле «Последнее посещение» и использовать его в качестве судьи, потому что, как Пекка упоминал о сессиях с истекшим сроком, ваша база данных не будет проинформирована о том, что они пропали.Таким образом, вы будете вынуждены либо сделать что-то, чтобы он вручную проверял, когда в последний раз пользователь был там, или что-то в этом духе, а затем сопоставить это с тайм-аутом сеанса (который я считаю равным 15-30 минутам по умолчанию для PHP) изатем по истечении указанного времени удалите всех пользователей, которые не были активны в течение последних X минут.

2 голосов
/ 21 августа 2010

Насколько я понимаю, в том, что вы описываете, нет ничего плохого.

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

1 голос
/ 20 декабря 2013

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

sess_id |sess_userid |sess_ipv4 |sess_lastseen (дата / время) |sess_sessionid (varchar)

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

надеюсь, что это поможет!

В другом посте, который я прочитал на прошлой неделе, было предложено иметь presession и curssession и убедиться, что вы назначаете новый сеанс (каждые 15 минут?) правильному пользователю.,переключение сессий со старого на новое и сохранение предыдущего сеанса в качестве проверки - не уверен, поможет ли это, но подумал, что id упомянул об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...