Как подсчитать показы баннеров и клики

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

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

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

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

<?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>"; ?>

чтобы инициировать вышеуказанный код (мы запускаем запрос include )

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

любая помощь ценится

4 ответов


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

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

что вам нужно сделать, это создать базу данных, а также пользователя или администратора для базы данных. Затем вы получите доступ к базе данных с помощью MySQL manager, большинство веб-хостов предоставляют 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);

?>

удачи


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

onclick="_gaq.push(['_trackEvent', 'Event Name', 'click', 'Button title/name']);"

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

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

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

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


вот мои 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"

Classic link ссылка href с классом 'ad', ссылки на сайт, цель открывается в новой вкладке. Простой.

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

Это новая аналитика.JS 'Google event tracking, код события onclick, который в основном говорит:" Эй, вы нажали эту ссылку, поэтому "отправьте" это "событие" в мою аналитику "события" (который можно проверить в разделе " в реальном времени > события "или"поведение > события"). "Блок-3-Реклама" - это зона, на моем сайте я лично знаю, как мне поставить рекламу, а точнее ее правой боковой области, но это может быть все, что угодно, поэтому ваша категория, тип вещь, как коробка, внутри которой у вас будут разные ссылки, которые вы хотите отслеживать. "Click" - это просто тип события, которое вы хотите отслеживать, может быть что угодно. "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});" />

тогда у вас есть событие onload, которое срабатывает при загрузке изображения, оно говорит: "отправить" это "событие", классифицировать его как событие "Block-3-Ads", в основном загрузка изображения считается "впечатлением", прежде чем он был нажат, но не так как этот маленький "onload" вызывается при загрузке, его не щелчок, а загрузка / впечатление, и снова, в частности, загружено объявление "кошка-это рыжая реклама", и, наконец, параметр "невмешательство" передается как 1, который просто говорит google, что вы отслеживаете событие без взаимодействия.

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

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