RTFM! статьи, советы, скрипты
::Заработок с помощью сайта ::JScript по-русски! ::Все русские мануалы::
МЕНЮ
О САЙТЕ
НОВОСТИ
СТАТЬИ
КНИГИ
АППЛЕТЫ
СВЯЗЬ

СЧЕТЧИКИ
Rambler's Top100
Рейтинг@Mail.ru
Яндекс цитирования

Сколько человек на сайте ?

Автор: Ancient Сайт: http://ancient.dax.ru/     Рейтинг: N/A из 7       <<НАЗАД
   
   
   Наверное многие из вас видели такую модную фишку как "Сейчас на сайте 126 человек, из них в чате 89". Если нет, то поставить счетчик от SpyLog вы можете легко увидеть сколько человек находится на вашем сайте.
   Вот и я решил сам реализовать такую функцию у себя на сайте http://ancient.dax.ru/ и вот к чему пришел...
   Протокол HTTP в принципе не позволяет определить количество посетителей одновременно находящихся на сайте. Почему это так я объяснять не хочу, но можете мне поверить на слово. Следовательно приходится придумывать какой-то искусственный метод.
   Первое что нам понадобится это база данных (в моем случае это MySQL). В этой БД нам нужна таблица с двумя полями username и time
   
   
   CREATE TABLE session (
   username varchar(25) DEFAULT '' NOT NULL,
   time varchar(14) DEFAULT '' NOT NULL
   );
   
   
   Далее приступим к написанию самого скрипта, вернее одной единственной функции. Итак,
   
   function online() {
   
   $username = getenv("REMOTE_ADDR");
   
   $past = time()-900;
   
   mysql_query("DELETE FROM session WHERE time < $past");
   $result = mysql_query("SELECT time FROM session WHERE username='$username'");
   
   $ctime = time();
   
   if ($row = mysql_fetch_array($result)) {
   mysql_query("UPDATE session SET username='$username', time='$ctime' WHERE username='$username'");
   } else {
   mysql_query("INSERT INTO session (username, time) VALUES ('$username', '$ctime')");
   }
   
   $result = mysql_query("SELECT COUNT(*) FROM session");
   $count = mysql_fetch_array($result);
   echo $count[0];
   
   }
   
   
   Алгоритм очень прост. Идентифицируем каждого пользователя и заносим время его прихода на страницу. Определяем время, через которое пользователь будет считаться покинувшим сайт. Вот и все.
   Теперь пояснения по коду. Первым делом мы получаем адрес удаленного пользователя (REMOTE_ADDR) и определяем время, через которое будем считать пользователя покинувшим сайт.
   
   mysql_query("DELETE FROM session WHERE time < $past");
   Этой строкой удалем все просроченные записи.
   
   $result = mysql_query("SELECT time FROM session WHERE username='$username'");
   Выбираем из БД поля, для которых REMOTE_ADDR пользователя совпадает с уже зафиксированным.
   
   if ($row = mysql_fetch_array($result)) {
   mysql_query("UPDATE session SET username='$username', time='$ctime' WHERE username='$username'");
   } else {
   mysql_query("INSERT INTO session (username, time) VALUES ('$username', '$ctime')");
   }
   Если такие записи в таблице есть, то обновляем, заносим новое время захода на страницу, если нет - добавляем новую запись.
   
   
   $result = mysql_query("SELECT COUNT(*) FROM session");
   $count = mysql_fetch_array($result);
   echo $count[0];
   Считаем из базы количество записей - это и будет количество поситителей на сайте.
   
   Это все.
   
   
   --------------------------------------------------------------------------------
   
   
   


<<НАЗАД      ОЦЕНИТЬ СТАТЬЮ    ВЕРСИЯ ДЛЯ ПЕЧАТИ>>
Статья прочитана :  раз.




пейкюлю



 
 
 
 
 
pauk ©® 2000-2015. All rights reserved.
При перепечатке ссылка на сайт и указание обязательны.
Мнение администрации сайта не всегда совпадает с мнением автора.
Орфография и пунктуация - авторские.
Администрация не несет никакой ответственности за использование материалов.
.
Protected by Copyscape DMCA Takedown Notice Infringement Search Tool