Вторник, 17.06.2025, 23:34
Приветствую Вас Гость | RSS
Меню сайта
fff
  • Индексация
  • Девочки
    Форма входа
    Категории раздела
    Теория алгоритмов [3]
    Теория алгоритмов
    Code Snippets [1]
    Code Snippets
    Все о PHP [20]
    Все о PHP
    Visual C++ [13]
    Visual C++
    WIN32 API [7]
    WIN32 API
    Delphi [72]
    Delphi
    ASP [2]
    ASP
    Java [67]
    Java
    VBScript [6]
    VBScript
    CGI [2]
    CGI
    VRML [2]
    VRML
    PERL [9]
    PERL
    HTML [4]
    HTML
    XML [10]
    XML
    Архив записей

    Статьи по Оптимизации

    ПРОГРАММИРОВАНИЕ! СОЗДАНИЕ САЙТОВ И ИХ ОПТИМИЗАЦИЯ

    Главная » Статьи » Программирование » Все о PHP

    Анализ посещаемости сайта рефералами
    Анализ посещаемости сайта рефералами
    Реферал - это url, с которого посетитель приходит на ваш сайт. К примеру, на странице http://www.site.com/links.html есть ссылка на ваш сайт. Если человек нажмет на нее, то он попадет на ваш сайт. Тогда url http://www.site.com/links.html будет вашим рефералом.

    Каждому владельцу ресурса не будет лишним знать, откуда именно заходят посетители на его сайт. Для тех, кому интересно решение данной проблемы (задачи) с помощью PHP, и посвящена данная статья.

    Не спорю, что у любой уважающей себя CMS (content management system, система управления содержанием) есть модули (боты), которые отвечают за сбор статистики. Для тех же, у кого на сайте не стоит CMS, есть возможность попрактиковаться в написании и конфигурировании собственного мини-модуля статистики.

    Его можно реализовать в небольшом скрипте, который будет отслеживать нажатия на ссылки, записывать их URL'ы в базу данных (в нашем примере это MySQL) и генерировать статистику в виде графика. Да и поможет разобраться, как это все работает на самом деле, не копаясь в модулях сторонних разработчиков.

    Нам потребуется три файла:
    referer.sql (запрос к БД на создание таблицы, где будет храниться статистика);
    referer.php (сам скрипт);
    viewreferer.php (скрипт для просмотра статистики).

    Для создания таблицы referer необходимо выполнить запрос referer.sql. Вот его содержание:
    CREATE TABLE referer (
    url varchar(100) NOT NULL,
    hits int(10) DEFAULT '0' NOT NULL,
    PRIMARY KEY (url)
    );

    Теперь займемся файлом referer.php. Зададим значения переменным:
    $hostname = "localhost"; // предоставляется вашим хостером. В большинстве случаев это - localhost (иногда бывает 127.0.0.1)
    $username = "your-username"; // имя пользователя - ваш логин для подключения к базе данных
    $password = "your-password"; // вы должны получить его у своего хостинг-провайдера
    $userstable = "referer"; // таблица, в которой будут храниться результаты работы нашего скрипта
    $dbName = "your-db-name"; // имя БД, в которой содержится таблица referer

    В переменную $ref заносим информацию о ссылке-реферере:
    $ref = strtolower($HTTP_REFERER);

    С помощью функции strtolower переводим значение переменной $ref в нижний регистр. Это делается для того, чтобы ссылки типа www.site.com, www.Site.com или WWW.SITE.COM были одинакового регистра.

    Если переменная $ref не пустая,
    if(!empty($ref)){

    то подключаемся к БД:
    mysql_connect($hostname,$username, $password) or die(mysql_error());
    mysql_select_db("$dbName") or die(mysql_error());

    Производим выборку из столбца url, значение которого совпадает с $ref
    $query = "select * from $userstable where url = '$ref'";

    Переменная $rows содержит количество совпадений
    $result = mysql_query($query);
    $rows = mysql_num_rows($result);

    Если же не найдено ни одной записи (т.е c такого url'a еще не было рефералов)
    if ($rows == 0){

    устанавливаем значение переменной $hits в "1"
    $hits = "1";

    А далее просто выполняем вставку url'а и переменной $hits в нашу таблицу (referer):
    $query1 = " into $userstable (url,hits) values('$ref','$hits')";

    Выполняем запрос:
    mysql_query($query1);
    }

    Если же были найдены записи по данному url (т.е c этого url'a уже заходили рефералы),
    else {
    $hitquery = "select hits from $userstable where url = '$ref'";
    $result2 = mysql_query($hitquery);
    $row = mysql_fetch_array($result2);
    $hits = $row["hits"];

    Инкрементируем значение переменной $hits (увеличиваем на "1")
    $query2 = "update $userstable set hits = hits+1 where url = '$ref'";
    mysql_query($query2);>
    }
    }

    В ту страницу сайта, для которой необходима статистика по рефералам (как правило - это главная страница, index.php), необходимо вставить ссылку на скрипт referer.php. Предполагается, что файлы referer.php и index.php находятся в одной папке.
    include("referer.php");

    На этом и заканчивается содержимое скрипта referer.php. Но, как я написал выше, есть также и графическая статистика. Это будет наш третий файл - viewreferer.php.

    Задаем переменные для подключения к БД:
    $hostname = "localhost";
    $username = "your-username";
    $password = "your-password";
    $userstable = "referer";
    $dbName = "your-db-name";

    Так как этот скрипт генерирует таблицу с графиком, то есть смысл для определенных диапазонов значений хитов назначить определенные цвета.$color10 = "#FFFF00";
    $color20 = "#FF0000";
    $color50 = "#008000";
    $color1k = "#0000FF";
    $color2k = "#0000A0";
    $color5k = "#000040";

    Опять соединяемся с БД:mysql_connect($hostname, $username,$password) or die(mysql_error());
    mysql_select_db("$dbName") or die(mysql_error());

    Делаем выборку из БД и упорядочиваем ее по убыванию (desc) количества хитов (столбец hits).$query = "select * from $userstable order by hits desc";
    $result = mysql_query($query);

    Подсчитываем количество строк с уникальными рефералами (это попросту число строк в нашей таблице referer). $number = mysql_num_rows($result) or die (mysql_error());
    $i = 0;

    Если же не найдено ни одной записи (таблица пуста), то выводим сообщение:if ($number == 0) {
    echo "

    Сведений о рефералах не обнаружено!

    ";
    }

    Если же рефералы есть: elseif ($number >= 1) {
    while ($i < $number){
    $row = mysql_fetch_array($result);
    $hits = $row["hits"];
    $ref = $row["url"];

    Выбираем цвет для текущего значения hits:if ($hits <10){
    $color = "$color10";
    }
    elseif (($hits >= 10 )
    and ($hits < 20)){
    $color = "$color20";
    }
    elseif (($hits >= 20 )
    and ($hits < 50)){
    $color = "$color50";
    }
    elseif (($hits >= 50 )
    and ($hits < 100)){
    $color = "$color1k";
    }
    elseif (($hits >= 100 )
    and ($hits < 200)){
    $color = "$color2k";
    }
    elseif ($hits >= 200){
    $color = "$color5k";
    }

    Табличка с графиком строится как результат MySQL-запроса. В первой колонке содержится название url'а, а во второй - количество хитов, а в третей - цветная полоса.echo "

    ";
    echo "";
    echo "";
    echo "";
    $i++;
    echo "
    $ref$hits
    n";
    }
    }

    Итак, все готово! Теперь можно периодически вызывать скрипт viewreferer.php и смотреть графическую статистику переходов на ваш сайт.

    Категория: Все о PHP | Добавил: Merlin (07.12.2009)
    Просмотров: 393 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *: