<MyRusakov.ru />

Своя Web-студия за 55 дней

Своя Web-студия за 55 дней

Система "Своя Web-студия за 55 дней" поможет Вам открыть свою собственную успешную Web-студию всего за 55 дней. Обучение построено на теории, плюс практике, то есть я прямо на Ваших глазах буду абсолютно с нуля открывать свою Web-студию, нанимать специалистов, принимать и выполнять заказы. Это настоящее реалити-шоу. Плюс весь курс разбит по дням, в каждый из которых Вам необходимо будет посмотреть небольшое количество видеоуроков, выполнить задания по этим урокам и проставить галочки о выполнении. Каждый из дней у Вас будет отнимать не более 1-го часа в день.

Таким образом, выполняя ежедневно маленькие шажки, Вы через 55 дней станете владельцем уже прибыльной Web-студии, заработав при этом первые 100 000 рублей.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Реализация Кто онлайн

Реализация Кто онлайн

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

Первым делом необходимо понять принцип работы "Кто онлайн". А принцип следующий: каждый пользователь, который не активен более заданного времени, выбывает из списка online. Каждый новый пользователь добавляется в список online. И этот список хранится в базе данных. Те, кто уже неплохо разбирается в PHP и MySQL, без проблем реализуют всё это. Однако, на всякий случай, распишу подробную инструкцию:

  1. Создать таблицу в базе данных со следующими полями:
    • id - уникальный идентификатор каждой записи.
    • user_id - уникальный идентификатор, соответствующий определённому пользователю. Другими словами, если у Вас есть регистрация, то в таблице с пользователями должен быть указан их id. Вот именно в это поле и необходимо помещать этот id.
    • last_time - количество секунд прошедших с полуночи 01.01.1970 до последней активности пользователя. Это количество секунд легко получается с помощью функции time().
  2. На каждой странице сайта, на каждом скрипте, необходимо реализовать следующий алгоритм:
    1. Получить информацию об активности пользователя, вызвавшего этот скрипт. Если этот пользователь находится в таблице, то надо просто обновить поле last_time у него. Если его там нет, то необходимо добавить этого пользователя в таблицу.
    2. Удалить всех online-пользователей из таблицы, у которых время неактивности превышает заданное, простым SQL-запросом.

Всё, это весь алгоритм. Он, на самом деле, очень простой и самый частоиспользуемый. Что касается времени, через которое пользователь считается за offline, то здесь советую выбрать 30 минут. А сам принцип, надеюсь, стал понятен: каждый пользователь, который переходит на любую страницу сайта, вызывает добавление себя в список online (или обновление last_time, если он там уже был), а также удаление уже неактивных пользователей.

Также вместо user_id можно использовать IP-адрес. Тогда можно реализовать, не сколько зарегистрированных пользователей, а сколько вообще людей находится на сайте.

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (24):

sync.o sync.o 21.07.2011 23:23:31

Насчет обновления поля last_time понятно - это делает сам пользователь, активничая на сайте. А вот кто вызовет команду удаления неактивных пользователей? Как запустить скрипт автоматом?

Ответить

Admin Admin 21.07.2011 23:33:59

Каждый пользователь не только обновляет себя, как активного, но он же и удаляет неактивных. Можно ещё написать отдельный скрипт и запустить его в cron на запуск через заданные интервалы. Результат будет тот же.

Ответить

sync.o sync.o 21.07.2011 23:43:07

круто)

Ответить

Trust Trust 27.11.2011 21:21:20

А вот у меня столбец online находится в одной и том же столбике, что и вся инфа о юзере, в общем вот id login password avatar email activation date online Эта структура таблицы users, вот например в начале каждого php-шного файла у меня подключается такой код идентифицирующий пользователя который ввел свои данные и вошел под своими данными... if (isset($_COOKIE['auto']) and isset($_COOKIE['login']) and isset($_COOKIE['password'])) { if ($_COOKIE['auto'] == 'yes') { $_SESSION['password']=strrev(md5($_COOKIE['password']))."000000"; $_SESSION['login']=$_COOKIE['login']; $_SESSION['id']=$_COOKIE['id']; } } if (!empty($_SESSION['login']) and !empty($_SESSION['password'])) { $login = $_SESSION['login']; $password = $_SESSION['password']; $result = mysql_query("SELECT id,avatar FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db); $myrow = mysql_fetch_array($result); } А вот как мне вытащить данные например именно того пользователя на странице которого я сижу, то есть мне нужно написать запрос на отображение онлайн ли он или нет, когда я сижу под своими данными чтоб мне это видеть... Не могу понять как это сделать и все, думал сделать через while и do, но эта мысль отпала , поняв что этот способ не подойдет. Ох надеюсь вы прочтете мой бред и спасете меня в очередной раз=)

Ответить

Admin Admin 27.11.2011 22:06:04

Допустим, страница, на которой выводится информация называется user.php. Чтобы выводить информацию на страницу именно того пользователя, который требуется, нужно передать get-параметр. То есть в реальности ссылка на страницу будет user.php?id=17. При переходе по такому адресу выводится тот пользователь, чей id=17.

Ответить

Trust Trust 27.11.2011 22:21:25

дело все в том что у меня стоит условие если вы находитесь на странице с id=1 то есть своим, то вам выводится одна информация, а если эта страница не ваша то вам выводится другая информация, все это происходит по сессионным логам...

Ответить

Adrenalin Adrenalin 07.03.2013 21:34:18

Где и как указать (прописать) это время - 30 минут

Ответить

Admin Admin 07.03.2013 21:38:21

В конфигурационном файле, например.

Ответить

Adrenalin Adrenalin 07.03.2013 23:59:35

Понял. 1. А как проверить время, после которого скрипт будет удалять пользователя? И как узнать кого удалять? Это надо уметь работать с функцией time()? А есть этот материал? 2. Как удалить из базы (таблицы) записи, которые не соответствуют нужной мне переменной?

Ответить

Adrenalin Adrenalin 08.03.2013 08:55:33

3. А можно пользователям запустить бесконечную сессию? Или хотя бы на очень долгое время? Как это сделать?

Ответить

Admin Admin 08.03.2013 10:29:08

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

Ответить

Admin Admin 08.03.2013 10:29:46

Тут надо много, чего уметь. В статье надо алгоритм, а не код. Готовые скрипты на других сайтах, а здесь обучение. Вот это почитайте http://myrusakov.ru/php-how-study.html

Ответить

Adrenalin Adrenalin 24.03.2013 12:14:50

А почему Интернет-Эксплоер не пропускает изображения jpg jpeg JPG JPEG такой проверкой: $type = $_FILES['somename']['type']; if (($type != "image/gif") && ($type != "image/jpeg") && ($type != "image/png") && ($type != "image/JPG") && ($type != "image/jpg")) { echo "выход"; exit; }

Ответить

Admin Admin 24.03.2013 12:38:36

Посмотрите значение $type через echo.

Ответить

Adrenalin Adrenalin 24.03.2013 13:40:09

А что я там должен увидеть?

Ответить

Admin Admin 24.03.2013 13:40:30

Посмотреть значение $type.

Ответить

Adrenalin Adrenalin 24.03.2013 17:14:30

Показало вот это: image/pjpeg Что это значит? Это какой-то новый формат изображений? Оно безопасное? Его стоит добавлять в список допустимых? Или это подделка?

Ответить

Admin Admin 24.03.2013 20:12:18

Оно безопасное, просто mime-type отправляет браузер, и вот IE, как всегда, отличился.

Ответить

sanya_lampard sanya_lampard 28.12.2013 00:52:00

А вы не можете по этому урок записать?

Ответить

alexandrdante alexandrdante 28.12.2013 00:56:03

В любом случае,если Вы не будете знать php,то не поймёте о чём речь в уроке =)

Ответить

sanya_lampard sanya_lampard 28.12.2013 00:57:15

Та знаю я php но много чего немонимаю, но а в видео уроке все легче запоминается.

Ответить

alexandrdante alexandrdante 28.12.2013 01:04:36

ну,во первых.Раз вы знаете php,то отдельно от остальных этот скрипт не напишешь,так как он неуместен будет Во-вторых,если вы знаете php,то,как по мне,то технология тут расписана довольно понятно. Такие вот дела. Если Михаил захочет,то сделает урок на данную тему,но не думаю,что это актуально

Ответить

sanya_lampard sanya_lampard 28.12.2013 01:15:05

Это кому как, кому-то не сложно это сделать, ну а некоторым посложнее, вот и здесь даже сколько переспрашивали, так не лучше записать урок, а уже в процесе каждый сделает под себя как удобно!

Ответить

prog prog 27.10.2014 14:42:05

Для этого нужно создать отдельную таблицу online или добавить поля в таблицу users?

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.