Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Професиональное программирование


Информационный Канал Subscribe.Ru

Здравствуйте, уважаемые читатели.

Сегодня несколько новостей.
1. Это открытие нового раздела - Web программирование.
Наш новый автор представляет не только свою первую статью, но и новый раздел
у нас на сайте.

Прошу отнестись снисходительно, и помочь достичь приемлемого уровня.
Так как я сам php знаю достаточно слабо, а Web программирование для меня заканчивается
протоколами обмена :) то просьба к тем кто знает - прямо на форуме или на сайте
в привате - поговорить с автором или со всеми чеитателями обсудив и посоветовав
пути к улучшению.
Ну, а если вам все понравилось, выскажите автору свою поддержку.


2ю Новость от нашей рассылки касательно именно ее, вне зависимости к сайту.
Я подал просьбу на перевод рассылки в разряд золотых, однако по причине некоторых
грамматических ошибок в ней, получил пока отказ.
В связи с этим просьба поддержать нашу рассылку на нашем форуме, если вы считаете,
что нам пора стать золотой, или поругать.
Если есть желание - то можете написать в subscribe.ru письма в нашу поддержку,
или сказать что нас не стоит переводить в категорию золотых - по вашему выбору.

Дополнительно высказываю благодарность тем кто реально начал нам помогать статьями
для сайта - как видите я свои обещания выполняю, популярность сайта в этой связи
резко выросла
до 400 и более человек в день, ожил форум, за что и выражаю свою признательность.
Тем кто еще сомневается, связывать ли свои статьи с нами, советую не ждать. :)

А теперь собственно рассылка.

А сколько же пользователей на сайте?
Ancient

Наверное многие из вас видели такую модную фишку как "Сейчас на сайте 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];



Считаем из базы количество записей - это и будет количество поситителей на сайте.

Это все. Ancient
http://ancient.dax.ru

На сегодня это пока все - следите за обновлениями на нашем сайте http://sclub.shelek.com

http://shelek.com - Хостинг для вас.
http://shelek.com/bn/ - Баннерообменная сеть для сайтов компъютерной направленности.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное