<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

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

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

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

Подписавшись по 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?

Ответить

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