[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Счетчик ПОСЕЩЕНИЙ
Tureg
всем привет, посоветуйте как лучше написать счетчик именно посещений, не посетителей, а ПОСЕЩЕНИЙ
проблема вот чем, счетчик нужно поставить на сайт, вывисти его можно через файл-шаблон (инклудом делал), который подключается к индексу, потом узнал что так нельзя, потому как получается что до срабатывания этого скрипт уже есть вывод чего либо на браузер, переписал скрипт в индекс, а echo запихал в шаблон, но проблема такая что при обновлении страницы к значению счетчика прибовляется 1, этого быть не должно huh.gif
нужно сделать так чтобы когда пользователь заходил на сайт прибовлялась 1, и больше не прибовлялась пока он сного не зайдет на сайт (то есть опять ткроет браузер)
использовал куки и сессии тоже пробовал, не помогает, все время при обновлении страницы и при переходу межлу ними прибовляется единица к счетчику

остановился я вот на этом:
в индексе у меня кусок кода
PHP
session_start(); 
$ipishnik $_SERVER["REMOTE_ADDR"];
$timenc date("H:i:s");
$datenc date("d.m.Y");
$connectnc mysql_connect("localhost""123""123")
or die(
"Не могу подключиться" ); 
mysql_select_db('123'$connectnc) or die ('Не могу выбрать БД');
$max1 mysql_result(mysql_query("select MAX(`id_n`) AS `maxid_n` from newcounter"),0,0);


а шаблоне
PHP
if ( isset($_SESSION['gotovo']))
                { echo 
"Посещения всего: $max1 За январь: $max1"; }
                else
                {
                
$newzn $max1 1;
                
mysql_query("INSERT INTO newcounter VALUES('$newzn', '$ipishnik', '$timenc', '$datenc')");
                echo 
"Посещения всего: $newzn За январь: $newzn";
                
$_SESSION['gotovo'] = 1;
                }
                
                
mysql_close($connectnc);




Спустя 5 минут, 21 секунда (30.01.2009 - 13:09) twin написал(а):
Нужно делать наоборот. Писать в базу, пока нет сессии. Потом ставить сессию и проверять. Если есть - не писать.
Только зачем на каждое посещение строчка, не слишком расточительно?

Спустя 28 минут (30.01.2009 - 13:37) FatCat написал(а):
ИМХО, проще в куки писать time() при каждом запросе страницы, и сверять записанное с текущим. Заинтвалисть, чтобы у кого нет куков, получался ноль...
Если разница больше 9000 - плюсуем нового посетителя.

По моим наблюдениям, такой алгоритм врет всего на 2-3% - показывает чуть больше, чем на самом деле.
Это намного точней гугл-аналитикса, который врет процентов на 50, занижая все цифры в среднем вдвое.

Спустя 13 минут, 58 секунд (30.01.2009 - 13:51) twin написал(а):
Да, действительно, такой алгоритм лучше. Сейчас безлимитка процветает, многие вообще браузер не закрывают месяцами. Без временной метки точности не будет.

Спустя -1 лет, 11 месяцев, 27 дней, 5 часов, 51 минута, 27 секунд (1.02.2009 - 19:43) Alchemist написал(а):
ИМХО, делать счетчик посещений через инклюд - не правильно в принципе. При таком варианте он будет считать в качестве посетителей абсолютно все обращения к странице, будь то поисковые роботы, спам-боты, е-мейл сканеры и т.д., или реальные посетители.

Если сайт небольшой, но разница может быть не слишком заметна, но для более-менее больших и посещаемых проектов - кол-во мнимых заходов может удвоить, а то и утроить реальную посещаемость.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.