Ergebnis 1 bis 5 von 5

Thema: Counter -> For the muff.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Counter -> For the muff.

    Huhu.
    Also : Ich würde mir gerne einen Counten (mit Hilfe von PHP und MySQL) schreiben, der einem anzeigt, wieviele Besucher in den letzten drei (ist egal, von mir aus auch zwei oder eine Minute, wir halt als "Besucher im Netzwerk : " angezeigt) Minuten auf den Seiten waren, auf denen dieses Script eingebau ist.
    Mein Script sieht atm so aus :

    PHP-Code:
    <?php
     $ip 
    $_SERVER['REMOTE_ADDR'];
     
    $host gethostbyaddr($_SERVER["REMOTE_ADDR"]);
     
    $timeatm time();
     
     
    $sql "SELECT * FROM `netzwerkcounter` WHERE `kennzeichnung` = '".$ip.$host."'";
     
    $query mysql_query($sql);
     
    $rows mysql_num_rows($query);
     
     if (
    $rows != 0) {
       
       
    $sql "UPDATE `netzwerkcounter` SET `zeit` = '".$timeatm."' WHERE `kennzeichnung` = '".$ip.$host."';";

       
    mysql_query($sql);
     } else {
       
    $sql "INSERT INTO `netzwerkcounter` (`kennzeichnung`,`zeit`) VALUES ('".$ip.$host."','".$timeatm."');";
                
        
    mysql_query($sql);
     }

       
    $timeatm time();
       
    $timeatm $timeatm 180;
       
       
    $sql "SELECT * FROM `netzwerkcounter` WHERE `zeit` >= '".$timeatm."'";
       
    $query mysql_query($sql);
       
    $rows mysql_num_rows($query);
       
       
    $online $rows;

    ?>
    Die Tabelle "netzwerkcounter" hat die Spalten ID, zeit und kennzeichnung.
    Das soll halt alles bewirken, dass nur die Gäste ausgelesen werden, die in den letzten drei Minuten in die Datenbank eingetragen wurden und durch die IP und Hostmaskspeicherung kein Gast zweimal gezählt wird.
    Jetzt habe ich folgendes Problem : Der Inhalt von der Spalte kennzeichnung ist immer die selbe, deshalb wird immer nur ein User online gezählt.
    Die IP sag ich hier mal nicht ist jedenfalls immer dieselbe und die Hostmask ist immer die Adresse vom Server (ich habe keinen eigenen, nur Webspace auf dem Server, also kann ich keine Konfigurationen am Server vornehmen).

    Jetzt hatte NPC mir gesagt, dass er mir "Morgen" (das war vor ca. ner Woche) ein Script schreiben wollte.
    Er hat aber nie Zeit und da ich keine Lust habe, dafür Wochen hinter ihm her zu laufen, frage ich hier, ob mir irgendwer die Lösung schreiben kann.
    Gehen muss es ja, denn das vBulletin, das auf meinem Webspace läuft, kann ja auch IP und Hostmask ermitteln.

    MfG, Kev

  2. #2
    Einen Versuch wäre es wert, "$_SERVER["HTTP_X_REMOTECLIENT_IP"]" statt "$_SERVER["REMOTE_ADDR"]" zu verwenden. Manche Server deaktivieren nämlich, aus Gründen, die mir nicht bekannt sind, letzteres. Ersteres sollte aber dennoch funktionieren.

    Wie gesagt, einen Versuch ist es wert. Zumindest eher, als NPC hinterherzurennen - selbst für deutlich einfachere Sachen kann man das monatelang machen...

  3. #3
    Hab nach deinem Rat geschrieben :
    PHP-Code:
     $ip $_SERVER['HTTP_X_REMOTECLIENT_IP'];
     
    $host gethostbyaddr($_SERVER['HTTP_X_REMOTECLIENT_IP']); 
    Funktioniert leider immer noch nicht.
    Diesmal wird in der Spalte "kennzeichnung" gar nichts gespeichert .o.

  4. #4
    Ich würde dir empfehlen, nicht nur die Benutzer der letzten drei Minuten zu zählen, das sind sonst eventuell ein bisschen wenige.

    Außerdem kannst du ein paar Rechnungen auch vereinfachen:
    PHP-Code:
    $timeatm time();
    $timeatm $timeatm 180
    wird zu
    PHP-Code:
    $timeatm time() - 180
    und
    PHP-Code:
    $rows mysql_num_rows($query);
    $online $rows
    zu
    PHP-Code:
    $online mysql_num_rows($query); 
    Außerdem könntest du die Anzahl auch direkt auslesen:
    PHP-Code:
    $sql "SELECT * FROM `netzwerkcounter` WHERE `zeit` >= '".$timeatm."'";
    $query mysql_query($sql);
    $rows mysql_num_rows($query);
       
    $online $rows
    wird zu
    PHP-Code:
    $sql "SELECT COUNT(*) AS anzahl FROM `netzwerkcounter` WHERE `zeit` >= '".$timeatm."'";
    $online mysql_result(mysql_query($sql), 00); 

    Geändert von Manni (27.11.2006 um 18:28 Uhr)

  5. #5
    Danke für deine Vereinfachungen aber ich möchte jetzt doch gerne wissen, wie es auch insgesamt funktioniert

    Zitat Zitat von Manni Beitrag anzeigen
    Ich würde dir empfehlen, nicht nur die Benutzer der letzten drei Minuten zu zählen, das sind sonst eventuell ein bisschen wenige.
    Okay, ich denke mal ich erhöhe auf ~15.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •