Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
4 / 4 / 1
Регистрация: 31.10.2015
Сообщений: 195
1

Изменить статус онлайн на оффлайн

02.12.2019, 14:35. Просмотров 2053. Ответов 6
Метки нет (Все метки)


Понимаю, что вопрос может показаться многим не относящийся к данной ветке. Но суть интересует следующая! Выход пользователя с сайта осуществляю следующим образом.

PHP
1
2
3
4
5
6
if (isset($_GET['exit']))
{
mysqli_query($link, "update `users` set `online`='0' where `id`='".$_SESSION['s_user_id']."'");
session_destroy();
header ('location:/?');
}
Если пользователь кликнул по ссылке выход... Он выходит как положено... Но если он кликнет по вкладке закрыть в браузере, или закроет просто браузер. Сессия обнуляется, но сведения о том (онлайн он или нет) остаются прежними - что пользователь онлайн! Соответственно на сайте пользователь будет отображаться, что он находится в онлайне. Через PHP я никак не смогу узнать, что пользователь закрыл вкладку(или браузер) язык то вроде как серверный а не клиентский. Получается копать надо в сторону JS?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2019, 14:35
Ответы с готовыми решениями:

Статус пользователя на сайте (онлайн/ оффлайн)
Ток начал изучать PHP, кто может помочь напишите пожалуйста код проверки статуса пользователя на...

Re: Статус пользователя на сайте (онлайн/ оффлайн)
может и мне кто поможет, не могу разобраться: мои переменные ".table_users." - таблица с...

Статус пользователя на сайте (онлайн/ оффлайн) на php
Как сделать чтобы заработал онлайн и какой код для этого на писать нужно??? Помогите пожалуйста...

статус оффлайн без logout'a вручную
допустим у меня есть авторизация с помощью БД и сессии, в бд есть поле status, которое показывает...

6
1111 / 554 / 318
Регистрация: 21.06.2012
Сообщений: 1,852
02.12.2019, 15:28 2
Лучший ответ Сообщение было отмечено allonemoon как решение

Решение

Цитата Сообщение от allonemoon Посмотреть сообщение
Получается копать надо в сторону JS?
да. Самый простой вариант это каждые N секунд посылать запрос на сервер и обновлять статус пользователя. Если статус не обновлялся более N секунд, то считаем его оффлайн.

Ну а так ещё можно вещать событие на движение мыши, клики, клавиши. Ну это в людом случае на js всё реализуется.
1
1717 / 1043 / 386
Регистрация: 13.06.2013
Сообщений: 3,550
02.12.2019, 16:05 3
Лучший ответ Сообщение было отмечено allonemoon как решение

Решение

А зачем лишние запросы слать? Особенно будет круто когда несколько вкладок откроют.
Достаточно во всех запросах обновлять статус. А чтобы базу не мучать можно в куки добавить дату последнего обновления статуса и чекать что прошло N секунд.
1
4 / 4 / 1
Регистрация: 31.10.2015
Сообщений: 195
02.12.2019, 16:18  [ТС] 4
Цитата Сообщение от tarasalk Посмотреть сообщение
Достаточно во всех запросах обновлять статус.
Благодарю! За идею.... Дотумкал как сделать! =)
0
1111 / 554 / 318
Регистрация: 21.06.2012
Сообщений: 1,852
02.12.2019, 16:50 5
Цитата Сообщение от tarasalk Посмотреть сообщение
Достаточно во всех запросах обновлять статус
не всегда этого достаточно. Бывает что пользователь на одной странице может висеть достаточно долго. К примеру редактировать профиль, заполнять форму, да всё что угодно. В каком случае нужно уведомлять как-то сервер что пользователь ещё на сайте.
0
4 / 4 / 1
Регистрация: 31.10.2015
Сообщений: 195
02.12.2019, 17:47  [ТС] 6
Цитата Сообщение от sasha0012 Посмотреть сообщение
не всегда этого достаточно. Бывает что пользователь на одной странице может висеть достаточно долго. К примеру редактировать профиль, заполнять форму, да всё что угодно. В каком случае нужно уведомлять как-то сервер что пользователь ещё на сайте.
хочу попробовать динамическое обновление через ajax по таймеру, проверять кто онлайн а кто нет.... думаю если таймер установить в 5 минут будет вполне нормально...
0
1111 / 554 / 318
Регистрация: 21.06.2012
Сообщений: 1,852
02.12.2019, 18:29 7
Цитата Сообщение от allonemoon Посмотреть сообщение
думаю если таймер установить в 5 минут будет вполне нормально
ну тут никаких стандартов нет. Как говорится: на вкус и цвет.

Ну а если рассматривать в плане нагрузки на сервер, то можно и гораздо меньше поставить. Например 30 сек. тоже вполне можно.

А в целом, да, 5 мин. вполне приемлемая величина.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2019, 18:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Оффлайн статус юзеру, который ушел с сайта?
с помощью функции $(window).unload(function(){ $.post( 'do.php', { user: $name, status:...

Онлайн\оффлайн простой скрипт
Есть бд с юзарами, которые при переходе на любую страницу обновляет значение lastvisit(timestamp)....

Статус онлайн-оффлайн пользователя
У меня есть таблица с пользователями: ид, логин, пароль... статус. Как сделать так, чтобы статус...

Как сделать статус пользователя "Онлайн/Оффлайн"?
Добрый вечер. Есть профиль пользователей, который могут просматривать другие пользователи. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.