[Code] Klicks auf Werbebanner zählenSie befinden sich: Home > Webmaster News
Wir wollen ein kleines Script entwickeln, mit dem wir Werbebanner auf unseren Seiten zufällig ausgeben lassen.
Werbende Firmen geben uns den Bannercode ja immer vor, der in der Regel so aussieht:
<a href='https://abc.com?code=xyz'><img src='https://abc.com/banner.jpg' width='468' height='60' border='0'></a>
Wir bauen uns zunächt eine kleine Tabelle "werb" mit folgendem Aufbau:
CREATE TABLE `werb` (
`lfd` int(10) unsigned NOT NULL auto_increment,
`aktiv` set('ja','nein') NOT NULL default '',
`banner` varchar(255) NOT NULL default '',
`link` varchar(255) NOT NULL default '',
`angezeigt` int(10) unsigned NOT NULL default '0',
`geklickt` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`lfd`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Und tragen unsere vorhandenen Bannercodes hier mit phpMyAdmin wie folgt ein:
`lfd` wird von MySql automatisch bei jedem neuen Eintrag immer um 1 erhöht. Hier muss nichts eingefügt werden.
Bei `aktiv` schalten wir die Banner, die angezeigt werden sollen auf 'ja'. Wenn wir einen Banner ausschließen bzw.
deaktivieren möchten, dann stellen wir das Feld um auf 'nein'.
In das Feld `banner` kommt nur der Code zur Anzeige des Banners. In unserem Beispiel ist das:
'https://abc.com/banner.jpg' width='468' height='60' border='0' (erstes Hochkomma nicht vergessen)
Anmerkung: Falls unsere Datenfelder durch Usereingaben gefüllt würden, so würden wir den Code mit
mysql_real_escape_string() entschärfen. Da wir hier aber alle Eingaben selbst machen, lassen wir alles original
stehen.
In das Feld `link` tragen wir nur den Link-Teil des Bannercodes ein:
https://abc.com?code=xyz
Die Felder `angezeigt` und `geklickt` sollen später zählen, wie oft der Banner auf unseren Seiten angezeigt wurde, und
wie oft Besucher auf ihn geklickt haben. Unsere Werbepartner stellen uns ähnliche Auswertungen ja auch zur Verfügung.
Unsere Zahlen werden von den fremden Statistiken abweichen; die Unterschiede sollten aber nur gering sein.
Wenn unser geplantes Script den Bannercode aus der Datenbank holt, dann kann es zugleich den Zähler `angezeigt` hochzählen. Dieser Teil unserer Statistik bereitet also kein Problem. Wenn ein Besucher aber auf den Original-Link
https://abc.com?code=xyz klickt, dann ist er von unserer Seite verschwunden und es gibt nichts zu zählen. Wir müssen den
Link also auf ein Zählscript umleiten, den Klick zählen, und den Besucher dann zur Zielseite weiterleiten.
Wir nennen dies Zählscript "klick.php" und steuern es an mit dem Parameter nr. Der Aufruf für die Tabellenzeile mit lfd = 1 lautet dann also: klick.php?nr=1
<?php
// klick.php
// Zu MySql verbinden
include "connect.php";
// Übergebenen Parameter prüfen
$fehler = true;
if(!empty($_GET['nr'])) {
$lfd = $_GET[nr];
if(is_numeric($lfd) AND $lfd>0) $fehler = false;
}
// Fehler festgestellt
if($fehler) die("Falscher Programmaufruf");
// Link ermitteln
$sql = "SELECT link FROM werb WHERE lfd = '$lfd'";
$erg=mysql_query($sql);
// Was gefunden?
if(!mysql_num_rows($erg)) {
die("Falscher Programmaufruf");
}
$row=mysql_fetch_array($erg,MYSQL_ASSOC);
$link = $row['link'];
// Zählen
$upd = "UPDATE werb SET geklickt = geklickt + 1 WHERE lfd = '$lfd'";
mysql_query($upd) or die(mysql_error());
// Und tschüss
header("Location:$link");
?>
Wir können das Script durch Direktaufruf mit einer existierenden Zeilennummer testen und können uns nun an das Script
machen, das einen Banner auswählt und anzeigt.
Wir speichern dies unter dem Namen "banner_anzeigen.php".
<?php
// banner_anzeigen.php
// Verbindung zur Datenbank muss schon hergestellt sein
// Zufälligen Banner auswählen
$sql = "SELECT lfd,banner FROM werb ORDER BY rand() LIMIT 1";
$erg=mysql_query($sql);
$row=mysql_fetch_array($erg,MYSQL_ASSOC);
$lfd = $row['lfd'];
$banner = $row['banner'];
// Zählen
$upd = "UPDATE werb SET angezeigt = angezeigt + 1 WHERE lfd = '$lfd'";
mysql_query($upd) or die(mysql_error());
// Bannercode ausgeben
$bannercode = "<a href='klick.php?nr=$lfd'><img src=$banner ></a>";
echo $bannercode;
?>
(Autor: Wolfgang), Eingetragen am 20.06.2008
Schreib ein Kommentar
|