Как проверить, вошел ли пользователь в систему? - PullRequest
0 голосов
/ 23 октября 2018

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

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

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

Ответы [ 3 ]

0 голосов
/ 23 октября 2018

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

0 голосов
/ 23 октября 2018

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

Если время последнего действия пользователяне более чем на минуту (или около того) меньше, чем СЕЙЧАС - пользователь считается активным.

Вы можете играть с параметрами - это не обязательно минута.Может быть 5 минут.

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

0 голосов
/ 23 октября 2018

Использование сессий.Пример:

session_start();
// set timeout period in seconds
$inactive = 600;
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
    $session_life = time() - $_SESSION['timeout'];
    if($session_life > $inactive)
    { session_destroy(); header("Location: logoutpage.php"); }
}
$_SESSION['timeout'] = time();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...