9

私たちのサイトにランダムな広告を表示する小さなphpスクリプトがあります。バナーは、指定した場所から配信されます。

私が本当に知りたい、または正しい方向に向けられたいのは、各バナーが取得するインプレッション数と、場合によってはそのバナーのクリック数を照合できるかどうかです。

これはphpで実行でき、dbに保存できると確信しています。手がかりを得ていないだけです。私はグーグルで検索しました、そして私が見つけることができたすべては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

5 に答える 5

14

あなたはすでに答えを選択しているようですので、あなたがそれをすべて理解したかどうかはわかりませんが、私はあなたのために小さなチュートリアルを書いていました。ついにそれを成し遂げました、それがまだあなたを助けることを願っています。

あなたの方法はバナーを提供するためにうまく機能しているようですが、データベースにアクセスしてクリック/インプレッションを追跡する場合は、すべてを実行することをお勧めします。したがって、バナーのプロパティもデータベースに保存してください。私は先に進んで、あなたのサーバー/ウェブホストがいくつかの無料のMySqlデータベースを許可していると仮定します。

あなたがする必要があるのは、データベースと、データベースのユーザー/管理者を作成することです。次に、MySqlマネージャーを使用してデータベースにアクセスします。ほとんどのWebホストはを提供しますphpMyAdmintableデータベースにアクセスしたら、データを記録するようにを設定する必要があります。

設定方法は次のとおりです。

|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);

?>

幸運を

于 2012-02-01T00:45:36.967 に答える
6

なぜあなたはグーグルアナリティクスにあなたのためにそれをさせてはいけないのですか?リンクがクリックされたときにイベントを発生させ、グーグルにそれをキャプチャさせますか?

onclick="_gaq.push(['_trackEvent', 'Event Name', 'click', 'Button title/name']);"
于 2012-02-01T00:55:40.953 に答える
1

をデータベースに保存する$numと、インプレッション数を簡単に取得できます。クリックにはクライアント側のアクションが必要です。最も簡単な方法は、AJAXを介してバナーがクリックされたときにカウントするjavascript関数を呼び出すことです。

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

次に、javascript関数(countClick())にAJAXを実行させて、バナーがクリックされたことをサーバーに通知します。

もう1つの方法は、パススルーページを作成することです。mysite.com/linkout.php?q=www.google.com次に、linkout.phpそのリンクをカウントしてデータベースを更新し、URLで渡された変数にリダイレクトします。

于 2012-01-31T23:33:51.117 に答える
1

あなたが私たちのサイトに分析を持っていると仮定すると、これが私の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"

クラシックリンクahrefリンクとクラス'ad'、サイトへのリンク、ターゲットが新しいタブで開きます。簡単。

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

これは新しい「analytics.js」グーグルイベントトラッキング、onclickイベントコードであり、基本的には、このリンクをクリックしたので、「この」イベントを私の分析「イベント」に送信します(これは下で確認できます) 「リアルタイム>イベント」または「動作>イベント」)。「Block-3-Ads」は、私が個人的に広告を掲載するエリアとして知っているWebサイトのエリア、具体的には右側のサイドバーエリアですが、任意のエリアにすることができるので、ボックス。その中には、追跡したいさまざまなリンクがあります。「クリック」は、追跡したいイベントのタイプであり、何でもかまいません。「The-Cat-Is-Ginger-Ad」は、私が追跡して情報を入手したいこの特定の広告です。

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

次に、srcを持つimgがあります。簡単。

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

次に、画像が読み込まれたときに発生するonloadイベントがあります。これは、「この」イベントを送信し、「Block-3-Ads」イベントとして分類します。基本的に、画像の読み込みは「インプレッション」としてカウントされます。クリックされる前ですが、ロード時にこの小さな「onload」が呼び出されるため、クリックではなく、ロード/インプレッションです。具体的には、ロードされる広告は「The-Cat-Is-Ginger-Ad」です。 、そして最後に、「nonInteraction」パラメータを1として渡します。これは、非インタラクションイベントを追跡していることをGoogleに通知するだけです。

かなり自明ですが、入力しすぎた可能性があります。

警告:これは、ページが読み込まれる可能性があり、広告がビューポートの下にあり、ユーザーの視界から外れている可能性があるという点で完全ではありませんが、それでも印象が正確ではないため、次はページがその画像を読み込むたびに広告を表示するのではなく、ユーザーが実際に広告自体にスクロールして表示したときに、インプレッションコードを1回だけ表示します。

于 2015-04-06T09:58:02.397 に答える
0

コードを提供してくれた@SaadImranに感謝します。また、質問ポスターにも大いに感謝します。

他の誰かが後で使用するためにそれを必要とする場合は、php7のコードの更新を以下に示します

注:同じデータベーステーブルを使用して、このコードをbanner.phpファイルに保存します

<?php
    // to only count views

    // select a random banner from the database to show
    $rows = $db->QueryFetchArrayAll("SELECT * FROM banners ORDER BY RAND() LIMIT 1");
foreach ($rows as $row) {

    // Now let's increment the Views field for the banner we selected

    $url = "/banner.php?clicked=" . $row['ID'];

    echo "<a href=\"" . $url . "\"><img src=\"" . $row['Image'] . "\" alt=\"" . $row['Caption'] . "\" title=\"" . $row['Caption'] . "\" /></a>";
}
    $db->Query("UPDATE banners SET Views = '".round($row['Views'] + 1)."' WHERE id = '" . $row['ID'] . "'");

// to count clicks need an if statement 
if(isset($_GET['clicked'])){
        $db->Query("UPDATE banners SET Clicks = '".round($row['Clicks'] + 1)."' WHERE id = '" . $row['ID'] . "'");

header("location: " . $row['Url']);


}
?>

皆さん頑張ってください:)

于 2020-04-13T11:59:19.920 に答える