PHP-Logo
Druckansicht von http://www.php-homepage.de/artikel/artikel2.html

PHP-Logo
[ Main Menue ]
Homepage
Downloads
Artikel
Scripts
Forum
PHP-Manual
Links
News
Freelancer
Bücher
RuDolF
Suche
Misc
Über diese Seite
Kontakt
Wunschzettel
MyGuestbook
*
[ Suche ]
*
[ Partner ]


Domain Webhosting
*
[ Partner Sites ]
Dynamic-Webpages
PHP-Center
PHP-Welt
phpUG.de
Random Link
*
[ Autoren gesucht! ]
PHP-Homepage.de sucht laufend Autoren für News und Artikel
Interesse?
*

Follow on Twitter - @phphomepage

RSS Feed blogoscoop

Referer-Auswertung (erschienen auf Linuxticker.com)

Diese Folge unserer PHP-Tips-Serie stammt von Mark Kronsbein, welcher ebenfalls Autor der ersten Folge war. Diesmal beschreibt er, wie man Referer-Statistiken per PHP3 erstellen kann.

Der Artikel bezieht sich auf folgende Sourcen.

PHP-Tips #3: Referer-Auswertung

von Mark Kronsbein

Was ist ein Referer?

Ein sogenannter Referer ist die URL, von welcher der User Ihre Seite betritt. Wenn er z. B. auf http://www.server.de/links.html auf den Link "Ihre Seite" klickt und dann auf http://www.ihre-seite.de (in diesem fall Ihre Seite) landet wäre http://www.server.de/links.html der Referer. Das folgende Beispiel zeigt Ihnen, wie Sie diese URLs mitprotokollieren können und so einen (ungefähren) Überblick haben, welche Seiten einen Link auf Sie gelegt haben.

Erfassung der Daten

   $hostname = "localhost";
   $username = "name";
   $password = "passwort";
   $userstable = "referer";
   $dbName = "db-name";
   $domain = "server.de";

Diverse Variablen wie MySQL-Login und Passwort werden definiert Das haben wir ja schon in der letzten Ausgabe gelernt. Unter $domain muß der Domainname angegeben werden, damit dieser in den Statistiken nicht auftaucht. Sollte ein Zugriff sowohl auf www.server.de als auch auf server.de möglich sein, empfiehlt es sich, nur "server.de" anzugeben, da dann alles aussortiert wird, was diesen String beinhaltet.

   $ref = "$HTTP_REFERER";

Nun wir der Referrer, also die Seite, von der der User kam, ausgelesen und als $ref definiert.

   $ref2 = strtolower($ref);

$ref wird mittels strtolower in Kleinbuchstaben umgewandelt. Z.B. kann ja statt www.server.de auch www.Server.de oder WWW.SERVER.DE eingegeben werden.

   $check = strstr($ref2,"$domain");

Um nun den entgültigen Wert des gewünschten Referers zu erhalten wird der nun kleingeschriebene Referer nach dem Wert $domain durchsucht.

   if(!empty($check)){
   }

Falls $check, also die Suche nach Ihrem Domainnamen in Referer, kein Ergebnis findet, wird nichts ausgegeben.

   elseif (empty($check)){
   mysql_connect($hostname, $username, $password)
    or die(mysql_error());
   mysql_select_db("$dbName") or die(mysql_error());

Falls ein Ergebnis, also ein Referer von "auswärts", gefunden wird, wird eine Datenbankverbindung mit den obigen Variablen hergestellt.

   $query 
    = "select * from $userstable where url = '$ref2'";

Die ausgewählte Tabelle sucht sich jetzt die Zeile raus, in welcher $ref2 (also der kleingeschriebene Referer) im Feld url steht.

   $result = mysql_query($query);
   $rows = mysql_num_rows($result);

$rows zählt die gefundenen Ergebnisse.

   if ($rows == 0){

Sollte $rows kein Ergebnis bringen, also 0 sein,

   $hits =  "1";

wird die Variable $hits, also die Anzahl der Zugriffe, auf den Wert 1 gestellt.

 
   $query1 
    = "insert into $userstable (url,hits)"
    . " values('$ref','$hits')";

Dann werden die URL und die Anzahl der Hits, im Falle dieses Neueintrags 1, in die Datenbank eingetragen.

 
   mysql_query($query1); 
   } 

Wurde ein Eintrag gefunden

   else {
      $hitquery 
       = "select hits from $userstable"
       . " where url = '$ref'";

wird dieser ausgewählt.

   $result2 = mysql_query($hitquery);
   $row = mysql_fetch_array($result2);
   $hits = $row["hits"];

Das Feld hits aus dem Ergebnis wird nun in ein Array gepackt.

   $query2 
    = "update $userstable set hits ="
    . " hits+1 where url = '$ref'";

Dann wird die das Feld hits der Tabellenzeile, die die URL enthält, um den Wert 1 erhöht, das heißt, nur das eine Feld wird verändert.

   mysql_query($query2); 
   }
   }

Speichern Sie nun diese Datei als referer.php3 und fügen Sie sie mittels

   include("referrer.php3");
in Ihre Seiten ein.

Die grafische Auswertung

Wir beginnen wieder mit den uns jetzt schon bekannten Variablen zur Verbindung zu MySQL.

   $hostname = "localhost";
   $username = "name";
   $password = "passwort";
   $userstable = "referer";
   $dbName = "db-name";

Als nächstes definieren wir die gewünschten Farben für die Anzahl der Hits.Selbstverständlich können Sie die Farben Ihren Wünschen anpassen.

   $color10 = "#FFFF00"; 
   $color20 = "#FF0000"; 
   $color50 = "#008000"
   $color1k = "#0000FF"
   $color2k = "#0000A0"
   $color5k = "#000040"
Die Verbindung wird hergestellt.
   mysql_connect($hostname, $username, $password) 
         or die(mysql_error());
mysql_select_db("$dbName") or die(mysql_error());

Jetzt werden wieder alle Daten ausgewählt und absteigend nach Hits geordnet.

   $query 
    = "select * from $userstable order by hits desc";
   $result = mysql_query($query);

Die Anzahl der Ergebnisse, sprich der gefundenen Eintragungen wird ermittelt.

$number = mysql_num_rows($result) or die (mysql_error());
$i = 0;

Wenn jetzt das Ergebnis von $number gleich 0 ist wird eine Fehlermeldung ausgegeben.

 if ($number == 0) {
        print "<center><p><b>Bisher keine Referer!<
        /b></center>";
}

Wenn Ergbnisse, sprich Hits und URLs, gefunden wurden, also $number größer oder gleich 1 ist:

 elseif ($number >= 1) {
        while ($i < $number){

        
$row = mysql_fetch_array($result);

Es wird definiert, daß

   $hits = $row[hits];

$hits das Ergebnis des Feldes "hits" ist.

   $ref = $row[url];

$ref das Ergebnis des Feldes "url" ist.

Nun werden die Hits gezählt und entsprechen der obigen Angaben die gewünschte Farbe ausgewählt.

   if ($hits < 10){

      $color = "$color10";
   }
   elseif (($hits >= 10 )
           and ($hits < 20)){

      $color = "$color20";
   }
   elseif (($hits >= 20 ) 
           and ($hits < 50)){

      $color = "$color50";
   }
   elseif (($hits >= 50 )
           and ($hits < 100)){

      $color = "$color1k";
   }
   elseif (($hits >= 100 )
           and ($hits < 200)){

      $color = "$color2k";
   }
   elseif ($hits >= 200){
      $color = "$color5k";
   }

Nachdem die Farbe gewählt wurde, wird eine HTML-Tabelle aufgebaut, die eine Zelle beinhaltet, deren Breite (in Pixel) genau der Anzahl der Hits entspricht.

   print "<div align=\"left\">";
   print "<table cols=3 border=\"0\" width=
   \"100%\"><tr><td align=left with=\"400\">
   <b><a href=\"$url\">$url</a></b></td>";
   print "<td align=right width=\"60\">
   <b>$hits</b></td>";
   print "<td align=left width=\"$hits\"
   bgcolor=\"$color\"></td></tr>";
   print "</table>\n";
   }
   }

Sämtliche Ergebnisse bei der Abfrage nach $url und $hits werden ausgegeben.

   $i++;
   print "</table>\n";
   }
   }

Speichern Sie die Datei unter viewreferer.php3 und warten Sie einige Zeit. Dann werden Sie eine grafische Auswertung über die (meisten) Seiten haben, die auf Ihre Site gelinkt haben.


Zurück zur Übersicht
© Copyright 1999 - 2011 by Mark Kronsbein | Impressum | NutzungsbedingungenWeiterempfehlen | Seitenanfang
0.0113