[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стетчик просмотра заметок
Pinoplast
Есть гиперссылки к статьям, мне нужно подсчитывать количество кликов по ним посетителей и выводить число посешений. Меня интересует логика написания этого скрипта(или другими словами алгорит написания, не код!!! хотя как части его наверно стоит представить) и мнения про разные варианты написания. Просто читал и не знаю что луше взять через базу считать, через файл, через куки..... так далее и тому подоное???



Спустя 6 минут, 54 секунды (24.09.2009 - 19:08) waldicom написал(а):
все ссылки ведут в один файл, которые считает и уже дальше загружает ссылку.
Для этого надо "подготовить" все ссылки при генерации страницы.
Сам скрипт просто берет параметр (адрес запрошенного ресурса) и складывает хоть в базу хоть в ассоциативный массив с последующей сериализацией...

Спустя 6 минут, 40 секунд (24.09.2009 - 19:15) Pinoplast написал(а):
это простой счетчик я так понял, а клиент может заходить один и тотже тогда как его отслежывать по какому параметру чтоб не накручивал счетчик, я так думал что регестировать ip в базе вот толбко база будет расти и громаздиться а плюс еще есть не постояные ip что с такими делать как отследить???

Спустя 26 минут, 45 секунд (24.09.2009 - 19:41) ИНСИ написал(а):
в БД статье создаешь поле `view`. А после открытия статьи, делаешь UPDATE .... на 1 число поле `view`.

А чтобы не накручивать счетчик делай через куки..

либо есть еще вариант.
создаешь еще поле `ip_view` в него через | вносишь ip проголосовавшего. А при открытии страницы перед тем как сделать update `view` делишь поле `ip_view` через explode. Если в этом поле есть такой ip, то не делаешь upodate, если нет, то делаешь =))

Спустя 9 минут, 8 секунд (24.09.2009 - 19:50) Pinoplast написал(а):
Это все хорошо но я так думаю что получиться так же как тут на форуме сколько раз я захажу в эту тему тем самым счетчик меня считает за нового чувака и растет, а мне такое бы не хотелось, хочеться чтото по серезние, во только пока еще не решыл к чему превязать к айпи или чему то другому, подскажыте на что проверять можна и из чего лучше (база , файл, куки)!!!!

Спустя 2 минуты, 23 секунды (24.09.2009 - 19:53) Pinoplast написал(а):
А айпишники не загромаздят базу быстро?

Спустя 4 часа, 33 минуты, 21 секунда (25.09.2009 - 00:26) FatCat написал(а):
У нас сделан счетчик кликов, но без привязки к пользователям или айцпишникам, просто число кликов.
http://phpforum.ru/html/counter/
Если интересно, сам код могу показать, он довольно простой.

Спустя 14 часов, 22 минуты, 38 секунд (25.09.2009 - 14:49) ИНСИ написал(а):
Pinoplast попробую примерно объяснить

Таблица: post, в ней поля id,title,text. Теперь доблавяешь еще 2 поля, view, ip_view

и Код при открытии статьи:
PHP
$res = mysql_query(" SELECT `view`, `ip_view` FROM `post` WHERE id='{$id}' ");
    $row = mysql_fetch_array($res);
    
    if
($row['view'] > 0) {
        $arr = explode("|", $row['ip_view']);
        foreach($arr as $daten) { if($daten == $_SERVER['REMOTE_ADDR']) { $_SESSION['msg'] = 1; } }
        if(!isset($_SESSION['msg'])) {
            $my_view = $row['ip_view'] + 1;
            $my_ip = $row['ip_view'] . '|' .$_SERVER['REMOTE_ADDR'];
            
            $vii 
= mysql_query("UPDATE `post` SET `view`='{$my_view}', `ip_view`='{$my_ip}' WHERE `id`='{$id}'");
        }
        else { unset(
$_SESSION['msg']); }
    }
    else {
        $my_view = 1;
        $my_ip = $_SERVER['REMOTE_ADDR'];
        $vii = mysql_query("UPDATE `post` SET `view`='{$my_view}', `ip_view`='{$my_ip}' WHERE `id`='{$id}'");
    }


примерно так, исправь где надо, быть может ошибка где есть ... в общем, если что, пиши

Спустя 5 минут, 29 секунд (25.09.2009 - 14:54) glock18 написал(а):
вот этот кусок странный

PHP
if(!isset($_SESSION['msg'])) {
// убрал пару строк, чтобы понятно было что именно здесь странно
    
unset($_SESSION['msg']);
}


Спустя 30 минут (25.09.2009 - 15:24) ИНСИ написал(а):
glock18 может по другому можно сделать?

допустим я сделал. Если такого ip нет в базе, то создает сессию. А если нет, то ничего не делает.

далее тот кусок который ты дал, проверяет, есть ли сессия, если нет, то увеличивает просмотр, если да, но ничего не делает, а это значит что мой ip уже есть в базе.

Спустя 19 минут, 43 секунды (25.09.2009 - 15:44) glock18 написал(а):
welbox2
сейчас предлагаю забыть о запросе, который там стоит. хотя тему счетчики здесь уже много раз обсуждали - такой счетчик делается в один запрос без всяких проверок с помощью insert ... on duplicate key update

сейчас я о другом:
PHP
if(!isset($_SESSION['msg'])) {
// убрал пару строк, чтобы понятно было что именно здесь странно
    
unset($_SESSION['msg']);
}


это если перевести на русский:
Код
Если нет сообщения {
 уберем его
}


Спустя 56 минут, 16 секунд (25.09.2009 - 16:40) ИНСИ написал(а):
glock18 аааа. все понял =)) я просто не там поставил =)) а как можно сделать одним запросом?

отредактировал =))

Спустя 2 часа, 59 минут, 20 секунд (25.09.2009 - 19:40) Sylex написал(а):
waldicom
не понял, че за прикол с авой?

Спустя 53 минуты, 35 секунд (25.09.2009 - 20:33) waldicom написал(а):
Цитата (Sylex @ 25.09.2009 - 18:40)
waldicom
не понял, че за прикол с авой?

чуго?

Спустя 5 минут, 54 секунды (25.09.2009 - 20:39) FatCat написал(а):
Цитата (Sylex @ 25.09.2009 - 20:40)
че за прикол с авой?

Нормальная такая фаллическая ава. laugh.gif

Спустя 35 минут, 11 секунд (25.09.2009 - 21:14) waldicom написал(а):
Цитата (FatCat @ 25.09.2009 - 19:39)
Цитата (Sylex @ 25.09.2009 - 20:40)
че за прикол с авой?

Нормальная такая фаллическая ава. laugh.gif

Мужики, вы объясните про че вы речь ведете... Я тоже посмеюсь
Быстрый ответ:

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