Как узнать какой именно пользователь находится на странице?

Делаю чат, и хочу вывести тех пользователей которые сейчас находятся на странице чата, как это реализовать?
5ea9e0adac5e3142387717.png
  • Вопрос задан
  • 1903 просмотра
Пригласить эксперта
Ответы на вопрос 3
@historydev Куратор тега JavaScript
Острая аллергия на анимешников
session/socket id вам что-то говорит?
Ответ написан
@NedoKoder
1) Со стороны сервера в php можно с помощью "последнего визита" фиксировать что юзер на сайте, надеясь что через секунду после обновления страницы, а следовательно и этого поля, он не закрыл страницу и не забыл о вашем чате
2) Со стороны клиента как нибудь так: если чат это вся страница, то на js/jquery к событию закрытия вкладки/страницы/браузера, присобачить выход из онлайна. Но если чат это какая то область на странице, например как вкладка переписок в углу сайта ВК, то помимо события закрытия вкладки, выход из онлайна нужно присобачить к событию закрытия этой области страницы(если речь именно о нахождении внутри чата)... Т.е. php онлайн открывает, а события на js закрывают.

Таким образом можно добиться максимальной объективности этой отметки что юзер на самом деле онлайн
Ответ написан
Комментировать
@Valera221
Делаю сайты
Попробуй использовать базу данных
$my_id = когда человек регестрируется ты даешь ему айди
Например: $my_id = $_SESSION['id'];
или
$my_id = $_COOKIE['id'];

делаешь таблицу в sql с названием online
в online делаешь таблицы ip, user, ip

if (isset($my_id)) {$user_online = $my_name;}
else {$user_online="guest";}

if ($user_online == 'guest') {$Online = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `ip` FROM `online` WHERE `ip` = '$_SERVER[REMOTE_ADDR]'"));}

else {$Online = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `user` FROM `online` WHERE `user` = '$user_online'"));}


if ($Online['ip']) {mysqli_query($mysqli, "UPDATE `online` SET `time` = NOW() WHERE `ip` = '$_SERVER[REMOTE_ADDR]'");}
else if ($Online['user'] && $Online['user'] != 'guest') {mysqli_query($mysqli, "UPDATE `online` SET `time` = NOW() WHERE `user` = '$user_online'");}
else {if($user_online)mysqli_query($mysqli, "INSERT INTO `online` SET `ip` = '$_SERVER[REMOTE_ADDR]', `user` = '$user_online', `time` = NOW()");}

Все подробно рассказано в источнике
Источник: https://www.youtube.com/watch?v=S588D8yR_qI&list=P...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы