Seite 1 von 1

fremde URL- Zähler und Administration

Verfasst: 11.11.2004 18:48
von mgutt
Ja, da bin ich mal wieder:

Gibt es einen MOD, der fremde URL-Klicks in Beiträgen zählt, zusammenfasst und sich per Adminpanel nachvollziehen lässt?

Kurz erklärt was ich will..

Ein User schreibt einen Beitrag:

"hallo mein Forum ist viel besser also kommt zu www.dasbessereforum.de"

so wenn jetzt leute da drauf klicken, soll der natürlich ruhig den link anzeigen, aber er soll dann vorher den klick in der datenbank zählen.

dieses "zählen" soll für Beiträge und Signaturen gelten.

So und dann als Abschluss soll man im Adminpanel ne TOP100-Liste haben, wo die Links angezeigt werden.

Sinn der Sache soll sein, dass man solche "Spammer" ein wenig in Griff bekommt und bei Bedarf selbst editiert.

ach ja, als ADD-ON sollten die Links per "Mausdrüberschweb" natürlich normal angezeigt werden. Nur wenn einer draufklickt sollte halt eine Zählung erfolgen. (die Anzeige von z.B. http://www.meinforum.de/zaehlen.php?htt ... reforum.de möchte ich dadurch vermeiden)

Na was haltet Ihr von der Idee?

Verfasst: 12.11.2004 03:57
von D@ve
Schau Dir das mal an, benutze den um die Klicks auf meine Werbeanzeige bzw. meine Artikel im Redaktionssystem auszuwerten. Ist allerdings etwas angestaubt, als ich das gecodet hab war ich noch nicht so fit mit php, dafür ist es aber einfach nachzuvollziehen und sollte sich mit ein paar einfachen Handgriffen einbinden lassen. Man braucht nur eine counter-Tabelle in der IP, Browser, timestamp und jeweils die Artikel_id gespeichert wird (könnte man zB die Post_id nehmen). In der Posttabelle machst Du dann einfach noch ein zusätzliches Feld in dem die Anzahl der Klicks gespeichert werden...

Code: Alles auswählen

<?php
   //userdaten auslesen bzw definieren, wenn nicht vorhanden
   $user_ip = getenv('REMOTE_ADDR');
   $user_agent = getenv('HTTP_USER_AGENT');

   if(!$user_ip)
   {
     $user_ip = " ";
   }

   if(!$user_agent)
   {
     $user_agent = " ";
   }

   //Einträge aus der Tabelle löschen, die älter als $expire_time Sekunden sind
   $time = time();
   $expire_time = $time - 43200; // Zeit nach der wieder ein Reload möglich ist
   mysql_query("DELETE FROM counter_users WHERE visit_time < $expire_time");
   //echo mysql_error();

   if ($artikelid)  //zähler für Artikel
   {
       //userdaten mit daten aus Datenbank vergleichen die noch in der Zeit liegen
       $query_string = (" SELECT * FROM counter_users " .
                        " WHERE artikel_id = $artikelid AND" .
                        " user_ip = '$user_ip' AND" .
                        " user_agent = '$user_agent' AND" .
                        " visit_time > $expire_time");

       @$result = mysql_query ($query_string);
       //echo "<br>" . mysql_error() ."<br>";

       //Wenn kein Datensatz gefunden, Counter hochzählen und aktuellen User Speichern
       if (!@mysql_result($result,0,0))
       {
         @mysql_query(" UPDATE artikel SET artikel_aufrufe = artikel_aufrufe+1 WHERE artikel_id = $artikelid");
         $query_string = " INSERT INTO counter_users (user_ip, user_agent, visit_time, artikel_id) " .
                         " VALUES ('$user_ip', '$user_agent', '$time', $artikelid) " ;

         mysql_query($query_string);
       }


       //IP-Tabelle auslesen
       //nicht mehr benötigte Einträge löschen
   }

   else if ($werbungid)  //zähler für Werbung
   {
       //userdaten mit daten aus Datenbank vergleichen die noch in der Zeit liegen
       $query_string = (" SELECT * FROM counter_users " .
                        " WHERE werbung_id = $werbungid AND" .
                        " user_ip = '$user_ip' AND" .
                        " user_agent = '$user_agent' AND" .
                        " visit_time > $expire_time");

       @$result = mysql_query ($query_string);
       //echo "<br>" . mysql_error() ."<br>";

       //Wenn kein Datensatz gefunden, Counter hochzählen und aktuellen User Speichern
       if (!@mysql_result($result,0,0))
       {
         @mysql_query(" UPDATE werbung SET werbung_hits = werbung_hits+1 WHERE werbung_id = $werbungid");
         $query_string = " INSERT INTO counter_users (user_ip, user_agent, visit_time, werbung_id) " . //user in Tabelle schreiben
                         " VALUES ('$user_ip', '$user_agent', '$time', $werbungid) " ;

         @mysql_query($query_string);
       }
       Header("Location: ".$url);
   }
?>

Aufrufen tu ich den über:

Code: Alles auswählen

    
    $werbung_text = "Meine tolle Schleich Werbung";
    $werbung_link = "www.blue-media.net;
    $werbung_id = "344";

echo '<a href="./counter.php?url=".$werbung_link."&werbungid=".$werbung_id." target="blank">$werbung_text </a>'
Gruß, Dave