Black Seo Way
Тёмная сторона оптимизации

Счётчик кликов на AJAX + PHP

26 Август 2011

В общем понадобилось мне сделать такую штуку – повесить на доры баннер и определить его CTR. Т.к. количество уников я уже знал, ибо стоял piwik, мне нужно было определить, сколько кликают на баннер. Это можно было легко определить, после клика на баннер будет идти переход на страницу, где тоже стоит счетчик, но у меня была немного другая задача – перехода не должно было быть.

То есть все должно было быть на JS + запись кол-ва кликов на определенный блок

<div class="banner"></div>

Решение начал реализовывать на AJAX, потому что ничего умнее мне в голову не пришло. Итак, собственно само решение:

Создаём отдельный JS либо вставляем в HTML следующий код

<script type="text/javascript">
function doclick() {
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/xml');}
    }

    else if (window.ActiveXObject) { // IE
    try {http_request = new ActiveXObject("Msxml2.XMLHTTP");}
    catch (e) {
        try {http_request = new ActiveXObject("Microsoft.XMLHTTP");}
        catch (e) {}
        }
    }

    if (!http_request) {return false;}
    http_request.onreadystatechange = function() { alertContents(http_request); };
    http_request.open('GET', 'http://your-domain/click.php?go=yes', true);
    http_request.send();

    function alertContents(http_request) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
    document.GetElementById('flag').innerHTML = "<b>Done!</b>";
            }
        }
    }
}
</script>

Суть проста – создается функция doclick(), при вызове которой идет запрос на страницу http://your-domain/click.php?go=yes. В случае удачного ответа устанавливается определенное значение для блока с id=»flag». Ну это по желанию. Если не нужно узнавать ответа запроса, просто удалите функцию alertContents().

Далее, создаём простейший обработчик на PHP. Ничего сложного, код в пару строк

<?php
if ($_GET['go']=='yes'){
   $file = fopen('clicks.txt','a+');
   fwrite($file,$_SERVER['REMOTE_ADDR']." - ".date("H:i:s")."\n");
   fclose($file);
}
?>

Всё. На папку, где находится файл clicks.txt ставим права 777 и радуемся – каждый клик по баннеру будет записываться в этот файлик в формате:

74.120.13.132 – 06:50:47
75.66.200.239 – 06:51:01
75.66.200.239 – 06:51:04
50.14.224.29 – 07:33:21
50.14.224.29 – 07:33:24
74.177.171.179 – 07:37:36

Этого вполне хватит, чтобы палить клики, и, главное, без перехода на страницу. Всё происходит в фоновом режиме. Но всё таки советую поставить какое то событие, после клика. Иначе если юзер кликнет и ничего не произойдет – он подумает, что не правильно кликнул или что то не работает и будет кликать повторно. Я вообще сделал так:

    function alertContents(http_request) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
    alert('Hello!');
            }
        }
    }

Ну и всё. Юзер кликнул, увидел сообщение, закрыл и пошел дальше.

Теперь самое решение на html:

<a href="#click" onclick="doclick()"><img src="button.png" /></a>
[...]
<div id="flag"></div>

Итог: юзер кликает на картинку button.png, совершается событие onclick, вызывающее функцию doclick(), та в свою очередь вызывает файл на сервере, он записываетв файл IP и дату клика, возвращает http 200и функция устанавливает флаг (либо выходит алерт). Во так :)

Ну и в догонку, как просчитать CTR, если кто то тоже захочет поэкспериментировать – Кол-во показов / Кол-во кликов * 100%. Показы берём из счетчика, клики – колво строк в нашем файле. Узнать частотность кликов можно, поделив 100 на полученный CTR.

Ну все это сделано для анализа каких то экспериментов.
Возможно кому то помог :)

  • http://www.na2co3.net/ Сода

    А разве piwik, не умеет делать тоже самое? Аналитикс – точно умеет.

  • http://yarikseo.ru Ярик

    Может и умеет, но мне было интереснее своё решение сделать :)

  • http://hyperseo.ru/ Хайпер

    Спасибо. Действительно интереснее порой размять пальцы и мозг, нежели приспосабливать готовые инструменты

Контакты

  • ICQ: 485191792
  • Skype: msp-yarik
  • Mail: yarikseo@gmail.com
  • Лента в твиттере
  • Блоги, которые я читаю

    Прочее



    Копиврайт © 2009 .. 2010 .. 2011
    Black Seo Way yarikseo.ru. Lets go!