Как подсчитать показы баннеров и клики
у нас есть небольшой 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 я, возможно, набрал слишком много.
предупреждение: это не идеально в том, что страница может загружаться, и объявление может быть ниже окна просмотра, вне поля зрения пользователя, и все равно получить впечатление, которое не является точным, поэтому далее я буду работать над запуском кода впечатления только один раз, когда пользователь фактически прокручивает к самому объявлению и просматривает его, вместо того, чтобы запускать его каждый раз, когда страница загружает это изображение.