Как считать показы баннеров и клики - PullRequest
8 голосов
/ 01 февраля 2012

У нас есть небольшой скрипт php, который отображает случайные объявления на нашем сайте.Баннеры обслуживаются из любого места, которое мы определяем.

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

Я уверен, что это можно сделать в php и сохранить в БД.Просто не имею понятия.Я искал в Google, и, казалось бы, все, что я мог найти, возвращает нас к 2002 и 2003 гг.

Вот наш скрипт:

<?php
$Img1 = "path to image folder/banner.png";
$Alt1 = "alt text for banner";
$Url1 = "http://www.externaldomain.com";

$Img2 ="path to image folder/banner.png";
$Alt2 = "alt text for banner";
$Url2 = "http://www.externaldomain.com";

$Img3 ="path to image folder/banner.png";
$Alt3 = "alt text for banner";
$Url3 = "http://www.externaldomain.com";

$Img4 ="path to image folder/banner.png";
$Alt4 = "alt text for banner";
$Url4 = "http://www.externaldomain.com";

$Img5 ="path to image folder/banner.png";
$Alt5 = "alt text for banner";
$Url5 = "http://www.externaldomain.com";

$num = rand (1,5);

$Image = ${'Img'.$num};
$Alt = ${'Alt' .$num};
$URL = ${'Url'.$num};

Print "<a href=\"".$URL."\"><img src=\"".$Image."\" alt=\"".$Alt."\" /</a>"; ?>

Для запуска кода выше (мы запускаем запрос на включение)

<?php include ("../adserver/thescriptabove.php"); ?>

Любая помощь приветствуется

Ответы [ 4 ]

13 голосов
/ 01 февраля 2012

Я вижу, что вы уже выбрали ответ, поэтому я не уверен, что вы все поняли, но я написал для вас небольшой учебник.Наконец-то все получилось, надеюсь, это все равно поможет.

Ваш метод работает нормально для показа баннеров, но если вы собираетесь войти в базы данных и отслеживать клики / показы, я бы предложил вампойти ва-банк. Так что сохраняйте свои свойства баннера в базе данных.Я собираюсь пойти дальше и предположить, что ваш сервер / веб-хост позволяет использовать несколько бесплатных баз данных MySql.

Что вам нужно сделать, это создать базу данных, а также пользователя / администратора для базы данных.Затем вы получите доступ к базе данных с помощью менеджера MySql, большинство веб-хостов предоставляют phpMyAdmin.Как только вы окажетесь в базе данных, вам нужно настроить table для записи ваших данных.

Вот как я хочу, чтобы вы настроили ее:

|Table Name: Banners      |
|-------------------------|
|Field:    | Type:        |
|-------------------------|
|ID        | int(5)       | The Primary Key and Autoincrement attributes should be set on the ID field as well
|Image     | varchar(100) |
|Url       | varchar(100) |
|Caption   | varchar(100) |
|Views     | int(10)      |
|Clicks    | int(10)      |

Теперь, когда выготовая база данных, вот самая сложная часть, PHP.Я в значительной степени сделал это для вас, но это не проверено, так что я уверен, что будут ошибки, с которыми вам придется работать.Но оно должно направить вас в правильном направлении и помочь вам учиться.

<?PHP

// First of all, we need to connect to the MySql server
// For more info, check out: http://php.net/manual/en/function.mysql-select-db.php
$conn = mysql_connect("localhost", "username", "password");
if(!$conn){
    die('Could not connect to the MySql Server ' . mysql_error());
}

// Now that we've connected to the MySql sever, we need to select the database
// More info can be found on the same link as above
$db_selected = mysql_select_db('my_database', $conn);
if(!$db_selected) {
    die ('Could not select the MySql Database: ' . mysql_error());
}

// Now we need to check the URL parameters to see, if we came to this page normally or because a banner was clicked
// If normally, we serve a random banner and increment the Views field in the database
// Otherwise, we increment the Clicks field and direct the user to the banner's URL


if(!isset($_GET['Clicked'])){
    // if the Clicked parameter is not set, we came to the page normally

    // Let's select a random banner from the database
    $result = mysql_query("SELECT * FROM banners ORDER BY RAND() LIMIT 1") or die(mysql_error());
    $row = mysql_fetch_array(result);   

    // Now let's increment the Views field for the banner we selected
    mysql_query("UPDATE banners SET Views = Views + 1 WHERE ID = '" . $row['ID'] . "'") or die(mysql_error());

    // let's set the URL to this same page but with the Clicked parameter set
    $url = "banner_server.php?Clicked=" . $row['ID'];

    // Last but not least, we have to output the banner HTML
    // Notice, I set the caption on both the 'alt' and 'title' attributes of the 'img' tag,
    // that's because IE shows the value of the 'alt' tag when an image is hovered,
    // whereas Firefox shows the value of the 'title' tag, just thought you might want that!
    echo "<a href=\"" . $url . "\"><img src=\"" . $row['Image'] . "\" alt=\"" . $row['Caption'] . "\" title=\"" . $row['Caption'] . "\" /></a>";

}else{
    // Otherwise, increment the Clicks field and redirect

    // First, let's get the ID of the banner that was clicked from the Clicked parameter
    $id = (int)$_GET['Clicked'];

    // now let's increment the Clicks field for the banner
    mysql_query("UPDATE banners SET Clicks = Clicks + 1 WHERE ID = '" . $id . "'") or die(mysql_error());

    // now let's select the banner from the database so we can redirect to the URL that's associated with it
    $result = mysql_query("SELECT * FROM banners WHERE ID = '" . $id . "'") or die(mysql_error());
    $row = mysql_fetch_array(result);

    // redirect to the URL
    header("location: " . $row['Url']);
}


// Close the MySql connection
mysql_close($conn);

?>

Удачи

6 голосов
/ 01 февраля 2012

Почему бы вам просто не позволить Google Analytics сделать это за вас?Запустить событие, когда ссылка нажата, и позволить Google захватить его?

onclick="_gaq.push(['_trackEvent', 'Event Name', 'click', 'Button title/name']);"
1 голос
/ 06 апреля 2015

Вот мои 2 цента, при условии, что у вас есть аналитика на нашем сайте:

Используйте следующий код при выводе ссылки:

<a class="ad" href="http://thecatisginger.com/" target="_blank" onclick="ga('send', 'event', 'Block-3-Ads', 'Click', 'The-Cat-Is-Ginger-Ad');"><img src="http://citybymouth.com/wp-content/uploads/2015/02/TCIG-Advert.jpg" onload="ga('send', 'event', 'Block-3-Ads', 'Impression', 'The-Cat-Is-Ginger-Ad', {'nonInteraction': 1});" /></a>

Чтобы объяснить:

<a class="ad" href="http://thecatisginger.com/" target="_blank"

Классическая ссылка - ссылка href с классом 'ad', ссылки на сайт, цель открывается в новой вкладке.Легко.

onclick="ga('send', 'event', 'Block-3-Ads', 'Click', 'The-Cat-Is-Ginger-Ad');">

Это более новый отслеживатель событий Google Analytics.js, код события onclick, который говорит, что вы нажали эту ссылку, поэтому «отправьте» это «событие» на«События» моей аналитики (которые можно проверить в «Realtime> Events» или «Behavior> Events»).«Block-3-Ads» - это область на моем веб-сайте, которую я лично знаю как область, в которой я размещаю рекламу, в частности, это правая боковая панель, но это может быть все, что вы захотите, поэтому сделайте свою вещь типа широкой категории, напримерполе, внутри которого вы будете иметь различные ссылки, которые вы хотите отслеживать.«Клик» - это просто тип события, которое вы хотите отслеживать, может быть любым."The-Cat-Is-Ginger-Ad" - это конкретное объявление, о котором я хочу отслеживать и у которого есть информация.

<img src="http://citybymouth.com/wp-content/uploads/2015/02/TCIG-Advert.jpg" 

Тогда у вас есть img с src.Легко.

onload="ga('send', 'event', 'Block-3-Ads', 'Impression', 'The-Cat-Is-Ginger-Ad', {'nonInteraction': 1});" />

Тогда у вас есть событие загрузки, которое срабатывает при загрузке изображения, оно говорит «отправить» это «событие», классифицируя его как событие «Block-3-Ads», в основномзагрузка изображения считается «показом» до его нажатия, но не после того, как эта небольшая «загрузка» вызывается при загрузке, это не щелчок, а загрузка / показ, и опять же, в частности, загружаемое объявление«The-Cat-Is-Ginger-Ad», и, наконец, передается параметр «nonInteraction» как 1, который просто сообщает Google, что вы отслеживаете событие отсутствия взаимодействия.

Это довольно понятно,хотя, возможно, я набрал слишком много.

ПРЕДУПРЕЖДЕНИЕ. Это не идеально, поскольку страница может загружаться, и объявление может находиться ниже области просмотра, вне поля зрения пользователя, и все равно получать впечатление, котороене является точным, поэтому далее я буду работать над созданием кода показа только один раз, когда пользователь фактически прокручивает само объявление и просматривает его, вместо того, чтобы запускать его каждый раз, когда страница загружает это изображение.

1 голос
/ 01 февраля 2012

Вы можете сохранить $num в базе данных довольно легко, чтобы подсчитать количество показов. Клики требуют действий со стороны клиента. Самый простой способ - вызвать функцию javascript, которая рассчитывает, когда по баннеру нажимают через AJAX:

print "<a href=\"".$URL."\" onclick=\"countClick($num);\"><img src=\"".$Image."\" alt=\"".$Alt."\" /</a>";

Затем пусть ваша функция javascript (countClick()) выполнит AJAX, который сообщит серверу, что на баннер нажали.

Другой способ - создать промежуточную страницу: mysite.com/linkout.php?q=www.google.com, а затем linkout.php подсчитать эту ссылку и обновить базу данных, а затем перенаправить их на переменную, переданную в URL.

...