|
Если Вам нужен качественный хостинг и Вы непротив сэкономить 10% на его покупке, то Вы можете воспользоваться моим специальным предложением по скидке на хостинг от компании Ютекс.
|
"Кто онлайн?" виджет с помощью PHP, MySQL и jQuery
В этом уроке мы сделаем полезный виджет, который будет отслеживать сколько посетителей в данный момент находится на сайте. Более он также будет способен определять страну, возраст, и заработную плату (шутка) посетителя. Страна будет определяться с помощью бесплатного сервиса http://www.hostip.info/. Если быть более точным, то с помощью АПИ сервиса.
Шаг 1 - XHTML Как всегда мы начинаем с фундамента. Кода совсем немного. Основная работа будет вестись над серверной частью. Наш виджет будет состоять из красивой кнопки с отображением количества человек, при нажатии на которую всплывает более подробная таблица с флагами стран. demo.html
Как Вы можете заметить из разметки выше, главный контейнер - "onlineWidget" содержит выезжающую панель (div с классом "panel"), общее количество посетителей онлайн (div "count"), ярлык "online" и зеленую стрелку справа.
div выезжающей панели наполняется динамически с помощью AJAX. Содержание этой панели по умолчанию - вращающийся файл gif, который вскоре заменяется гео информацией после обработки AJAX запроса. К этому мы еще вернемся. Шаг 2 - База данных Вся информация виджета хранится в таблице tz_who_is_online. Она состоит из шести полей (или колонок). Первое - ID (первичный ключ + автодобавление), второе - IP (сохраняет IP адрес, который преобразован в целое число с помощью функции ip2long). Далее следуют три поля, которые берутся из Hostip API - Country, CountryCode и City. Виджет на данный момент не использует поле CITY (город), но на случай если кто-то захочет доработать его - оно пригодится. Последнее поле - DT - временной штамп, который обновляется при каждой загрузки страницы и позволяет определить кто онлайн (пользователи, которые не обновляют страницу на протяжении 10 минут скорее всего уже покинули сайт).
Шаг 3 - CSS Виджет практически не использует картинок. Давайте взглянем на стили: who-is-online/styles.css - часть 1
В первом шаге выше Вы можете увидеть как мы придаем стили нашему виджету и выезжающей панели единовременно. Это для того, чтобы мы были уверены, что у них единый стиль, который в последствии легко можно будет поменять по желанию. who-is-online/styles.css - часть 2
Во второй части стилей мы описываем то, как должна выглядеть информации после получения ее от AJAX запросов.
Шаг 4 - PHP Именно здесь происходит вся магия. PHP должен сохранять базу данных посетителей онлайн постоянно обновленной, а также извлекать гео информацию от Hostip API. В дальнейшем это кешируется для дальнейшего использования в виде "куки" на компьютере пользователя. who-is-online/online.php
Этот PHP скрипт вызывается с помощью jQuery для вставки текущего количества человек онлайн в соответствующее место. "За кулисами" этот скрипт записывает IP адрес пользователя в базу данных и уточняет всю необходимую гео информацию. Это лучшая стратегия организации серверной части, так как мы запросы к АПИ распределяются каждому пользователя при их первом посещении. Вы можете сделать запрос на Hostip API обращаясь по УРЛ типа http://api.hostip.info/?ip=128.128.128.128. И получите валидный XML ответ, который будет содержать разного рода инфомрацию, включая страну, название города связанного с этим IP, аббревиатуру страны, а также абсолютные координаты. Мы извлекаем эту информацию с помощью функции PHP file_get_contents() и выбираем необходимую нам информацию. who-is-online/geodata.php
Geodata.php прочитывается с помощью jQuery для публикации информации в выезжающую панель. Файл делает запрос в БД с запросом GROUP BY, который группирует пользователей по стране и выстраивает их по количеству посетителей (чем больше с одной страны - тем выше в списке). Для иконок флагов используется набор от famfamfam. Большой плюс Hostip API в том, что также он выдает аббревиатуры страны в формате 2-х букв, что также поддерживается и в иконках. Таким образом скрипту очень просто найти необходимый флаг при его поиске в папке. Шаг 5 - jQuery JavaScript управляет AJAX запросами и выездом панели. Давайте взглянем на код:
setTimeout используется для задержки загрузки выезжающей панели после наведения мышки на кнопку. Таким образом, случайные движения и наведения на кнопку ни к чему не приведут и не будут лишний раз запускать весь процес. Вот и все готово! Думаю, подобная фишка пригодится многим! Настройка на своем сервере В исходниках находится SQL код, который необходимо выполнить после создания БД. Он создаст таблицу, которая используется виджетом. После этого Вам необходимо загрузить все файлы на Ваш сервер и подключить widget.js в шапку документа (вместе с jQuery фреймворком). После этого не забудьте внести Ваши данные для соединения с БД в файле connect.php. И в самом конце добавьте разметку из файла demo.html в необходимом месте Вашего документа. Данный урок подготовлен для Вас командой сайта http://ruseller.com
Хотите освоить PHP и MySQL с нуля? Рекомендую Вам курс «PHP+MySQL для начинающих», который содержит в себе 110 видеоуроков на DVD, которые позволят Вам быстро погрузиться в интересный мир web-программирования. Все уроки даны в легкой и доступной форме. Откройте для себя секреты создания профессиональных PHP сайтов с использованием базы данных MySQL! Оценивать уроки могут только зарегистрированные пользователи Если хотите не упустить данный урок, добавьте его в закладки Пять последних добавленных уроков в рубрике PHP: »Поддержка CSS3 с помощью PHP »Cоздаем массив в PHP »Как хранить массивы в базе данных »Рекомендации на будущее с системой голосования »Сканирование папки с изображениями (PHP) Зарегистрируйтесь, чтобы иметь возможность добавлять комментарии Комментарии: Автор: MQLab (2010-05-17 14:59:06) Подскажите что изменить в скриптах, что-бы открытие было не на верх, а вниз. принцип остаётся тот же. Автор: katya (2010-05-10 23:58:53) Короче говоря глобус можно посмотреть по адресу http://moyarabota.hut.ru Спасибо. Автор: cenzura (2010-04-30 05:36:39) А вот ещё один вариант http://s01.flagcounter.com/index.html вот так выглядит на сайте www.systems-fx.com Автор: katya (2010-04-28 01:32:49) Конечно сайт у меня очень плохой, но глобус, я думаю, всем понравится. Автор: katya (2010-04-27 21:51:14) Я зашла на ваш этот бесплатный сервис проверки айпи hostip.info и он определил что я из Германии. А потом предложил подкорректировать определение, если оно меня не устроило. На карте их сайта удивительным образом все почти точки, которые показывают посетителей, отмечены на Америке и Западной Европе. Вывод: этот сервис очень неправильно определяет вашу страну по причине отсутствия у них необходимой информации. Те же точки в России и Украине, которые там нарисованы - это наверное те, кто откорректировал свои немецкие адреса. Чтобы ставить счетчики на сайт нужно использовать другой сервис. У меня все. Автор: VALERI (2010-04-02 01:36:59) YO! Unable to establish a DB connection! Что за тема? Автор: Евгений (2010-03-26 15:28:41) Как я понимаю запрос к базе является исходящим соединение, которое на большенстве хостингов запрещено.... У меня всех пользователей показывал как неизвестных. Автор: RUDO (2010-03-15 00:38:51) Виталий, а вы вкурсе что widgeo.net со своим виджетом цепляет к вашему сайту или блогу всплывающую (pop up) рекламу. Эти виджеты рекомендовано удалить. А для контроля есть отличная штука как google analytics... и сайт не загромождает)) Автор: МаксимШкурупий (2010-03-12 12:29:15) "я тем самым контралурую посещяемость страниц по тематике поситителей" - ага - конечно :)! Автор: sunguard (2010-03-12 11:16:21) З.Ы. к тому же, у меня почему то пишет ошибку :( и вместо стран пишет row[country] ит.д. Автор: sunguard (2010-03-12 11:15:31) хотелось бы переделать его не под страны а под ГОРОДА... имхо полезнее, ведь на самом деле, очень мало интернациональных сайтов! Автор: Виталий (2010-03-11 15:17:44) Максим ,отвечу по поводу (зачем тебе столько попандеров на твоем сайте фотографа!).Просто я тем самым контралурую посещяемость страниц по тематике поситителей,мне очень интересно какая тема больше интересует поситителей на моем сайте,на какую тематику больше уделять внимание. Автор: МаксимШкурупий (2010-03-10 18:43:32) Виталий, и вот зачем тебе столько попандеров на твоем сайте фотографа! совсем непрофессионально! Автор: Виталий (2010-03-10 17:48:39) За чем так сложно, есть сервис с выбором да же дизайна под ваш сайт,просто и со вкусом,я пользуюсь уже 2 года и притензий нет!Пользуйтесь на здоровье http://www.widgeo.net Пример можете посмотреть на моем сайте http://videofotoservice.com.ua Автор: RUDO (2010-03-09 16:49:20) Как раз, вчера смотрел английскую версию... не получилось ща посмотрим что тут... вроде всё понятно)) Автор: Дмитрий (2010-03-09 15:58:29) а скрипт не сильно грузит сервер? Автор: Diman (2010-03-09 15:36:12) Круто! |
Если Вы давно мечтаете о создании собственного блога на движке Wordpress, то советую Вам обратить внимание на мой новый видеокурс "Wordpress - Профессиональный блог за один день". Это более 100 видеоуроков по всем аспектам создания и ведения своего блога на самом популярном движке в мире.
Меня часто спрашивают, как я раскручивал данный сайт? Мой ответ таков. Для раскрутки данного сайта использовалась методика "Мастер план по раскрутке сайта", которая была предложена Юсуфом Губайдуллиным в начале 2009-го года.
|
||









Автор: awror (2010-05-17 22:57:10)
Хороший прием ))