Распечатать всех вошедших в систему пользователей в СЕССИИ? - PullRequest
2 голосов
/ 01 июля 2011

У меня есть СЕССИЯ, которая поддерживает около 80 пользователей, я хочу напечатать все их имена пользователей и обновлять страницу каждые 60 секунд или около того.Я знаю, как обновить страницу, но <?php print_r($_SESSION['username']); ?> печатает только имя пользователя, связанное с моим личным сеансом.

Ответы [ 6 ]

4 голосов
/ 01 июля 2011

К сожалению, переменные сессий не работают таким образом.

Для отслеживания каждого сеанса одним из методов будет регистрация каждого входа / соединения в таблицу MySQL с прикрепленной к ней отметкой времени.

Затем на странице отслеживания удалите неактивных пользователей, затем выберите остальные:

т.е.

mysql_query("DELETE FROM sessions WHERE time < " . time() - 60);

$result = mysql_query("SELECT * FROM sessions");

while ($row = mysql_fetch_assoc($result)) {

    echo $row['username'] . "<br />";
}

Затем добавьте <meta http-equiv="refresh" content="60">, чтобы обновить страницуминут.

4 голосов
/ 01 июля 2011

$ _ СЕССИЯ уникальна для каждого пользователя сайта, она использует куки.print_r может показывать только содержимое текущего $ _SESSION.Вам потребуется база данных, чтобы знать все имена пользователей и Javascript для обновления страницы.

1 голос
/ 01 июля 2011

Данные сеанса хранятся в файлах, в зависимости от настроек вашего приложения вы можете анализировать эти файлы.На мой взгляд, не очень правильное решение, но оно поможет.

1 голос
/ 01 июля 2011

возможно, вы захотите использовать что-то вроде «memcached» и использовать переменную там.

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

База данных или memcached, вероятно, ваши лучшие возможности.

0 голосов
/ 28 февраля 2018

Я бы

  • добавил бы «онлайн» столбец в таблице пользователей.
  • Каждый раз, когда кто-то входит в систему или загружает страницу, к которой у него есть доступ, я бы установилонлайн-столбец с текущей отметкой времени.
  • При проверке вашего списка друзей в Интернете я бы запросил всех, кто был в сети в течение 60 секунд
  • Затем убедитесь, что страница вашего списка друзей в Интернете обновляется каждые 60секунд.
0 голосов
/ 22 января 2018

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

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

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