Ankündigung

Einklappen
Keine Ankündigung bisher.

[Skript | PHP + MySQL] Einfacher Counter mit Reloadsperre

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Skript | PHP + MySQL] Einfacher Counter mit Reloadsperre

    Hab einen kleiner Counter gebastelt, der folgende Features hat:
    • 24h IP Sperre
    • eine einzige MySQL-Tabelle
    • leicht einzubinden und anzupassen
    • zeigt heutige Besucher und die in den letzten 15 Min. an


    ersteinmal das ganze Script. Erklärung folgt unten:
    PHP-Code:
    <?php
      mysql_connect
    ('localhost','user','passwort') or die("Verbindung fehlgeschlagen.");
      
    mysql_select_db('datenbank') or die("Datenbank nicht vorhanden.");
      
    $table "counter";

      
    $tag date("j");
      
    $monat date("m");
      
    $jahr date("Y");
      
    $timenow mktime(0,0,0,$monat,$tag,$jahr);
      
      
    $sql_check "SELECT * FROM `".$table."` WHERE `timed` < '".$timenow."'";
      
    $erg_check mysql_query($sql_check);
      while(
    $row mysql_fetch_array($erg_check)){
        
    mysql_query("DELETE FROM `".$table."` WHERE `id`='".$row['id']."'");
      }
      
      
    $sql_check2 "SELECT * FROM `".$table."` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."'";
      
    $erg_check2 mysql_query($sql_check2);
      
    $row mysql_num_rows($erg_check2);
      if(
    $row == "0"){
        
    mysql_query("INSERT INTO `".$table."` ( `id` , `ip` , `timed` ) VALUES ('', '".$_SERVER['REMOTE_ADDR']."', '".time()."')");
      }else{
        
    mysql_query("UPDATE `".$table."` SET `timed`='".time()."' WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."'");
      }
      
      
    $sql_heute "SELECT * FROM `".$table."`";
      
    $erg_heute mysql_query($sql_heute);
      
    $heute mysql_num_rows($erg_heute);
      echo 
    "<b>heute:</b> ".$heute."<br />";
      
      
    $sql_gesamt "SELECT * FROM `".$table."` ORDER BY `id` DESC";
      
    $erg_gesamt mysql_query($sql_gesamt);
      
    $row mysql_fetch_array($erg_gesamt);
      
    $gesamt $row['id'];
      echo 
    "<b>gesamt:</b> ".$gesamt."<br />";
      
      
    $zeit "900";
      
    $time time();
      
    $zeit $time-$zeit;
      
    $sql_online "SELECT * FROM `".$table."` WHERE `timed` > '".$zeit."'";
      
    $erg_online mysql_query($sql_online);
      
    $online mysql_num_rows($erg_online);
      echo 
    "<b>online:</b> ".$online."";
    ?>
    Schema der MySQL-Tabelle:
    Code:
    CREATE TABLE `counter` (
      `id` bigint(20) NOT NULL auto_increment,
      `ip` varchar(15) NOT NULL default '',
      `timed` varchar(11) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Erklärung
    PHP-Code:
    <?php
      mysql_connect
    ('localhost','user','passwort') or die("Verbindung fehlgeschlagen.");
      
    mysql_select_db('datenbank') or die("Datenbank nicht vorhanden.");
      
      
    $table "counter";
    ?>
    Hier wird die Verbindung zur Datenbank hergestellt und die Tabelle
    angegeben, in der alle Daten gespeichert und ausgelesen werden.

    PHP-Code:
    <?php
      $tag 
    date("j");
      
    $monat date("m");
      
    $jahr date("Y");
      
    $timenow mktime(0,0,0,$monat,$tag,$jahr);
    ?>
    Hier wird der Timestamp des heutigen Tages Punkt Mitternacht errechnet,
    benötigt wird dieser gleich für die IP-Sperre.

    PHP-Code:
    <?php
      $sql_check 
    "SELECT * FROM `".$table."` WHERE `timed` < '".$timenow."'";
      
    $erg_check mysql_query($sql_check);
      while(
    $row mysql_fetch_array($erg_check)){
        
    mysql_query("DELETE FROM `".$table."` WHERE `id`='".$row['id']."'");
      }
    ?>
    Jetzt werden ersteinmal alle Datenbankeinträge, die vor heute gespeichert
    wurden, glöscht, um die DB nicht zu überfüllen.

    PHP-Code:
    <?php
      $sql_check2 
    "SELECT * FROM `".$table."` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."'";
      
    $erg_check2 mysql_query($sql_check2);
      
    $row mysql_num_rows($erg_check2);
      if(
    $row == "0"){
        
    mysql_query("INSERT INTO `".$table."` ( `id` , `ip` , `timed` ) VALUES ('', '".$_SERVER['REMOTE_ADDR']."', '".time()."')");
      }else{
        
    mysql_query("UPDATE `".$table."` SET `timed`='".time()."' WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."'");
      }
    ?>
    Dieser Scriptteil überprüft, ob die IP des User schon in der Datenbank
    vorhanden ist. Ist dies der Fall, so wird der Timestamp dieses Besuchers erneuert.
    Andernfalls wird ein neuer Eintrag hinzugefügt, der neben dem Timestamp und
    der IP eine ID enthält, die automatisch nach oben gezählt wird. (dank MySQLs auto_increment)

    PHP-Code:
    <?php
      $sql_heute 
    "SELECT * FROM `".$table."`";
      
    $erg_heute mysql_query($sql_heute);
      
    $heute mysql_num_rows($erg_heute);
      echo 
    "<b>heute:</b> ".$heute."<br />";
    ?>
    Auslesen Teil I: die Anzahl der heutigen wird über die Anzahl der Einträge ermittelt.
    PHP-Code:
    <?php
      $sql_gesamt 
    "SELECT * FROM `".$table."` ORDER BY `id` DESC";
      
    $erg_gesamt mysql_query($sql_gesamt);
      
    $row mysql_fetch_array($erg_gesamt);
      
    $gesamt $row['id'];
      echo 
    "<b>gesamt:</b> ".$gesamt."<br />";
    ?>
    Aulesen Teil II: die Anzahl aller Besucher wird über die id des letzten
    Besuchers ermittelt. Dies ist möglich, da der auto_increment-Wert der DB immer
    gesteigert wird, auch wenn die letzten EInträge gelöscht werden.
    PHP-Code:
    <?php
      $zeit 
    "900";
      
    $time time();
      
    $zeit $time-$zeit;
      
    $sql_online "SELECT * FROM `".$table."` WHERE `timed` > '".$zeit."'";
      
    $erg_online mysql_query($sql_online);
      
    $online2 mysql_num_rows($erg_online);
      echo 
    "<b>online:</b> ".$online2."";
    ?>
    Auslesen Teil III: die Anzahl der User, die in den letzten 15 Minuten online
    waren, wird ermittelt indem die Einträge zusammengezählt werden, deren Timestamp
    innerhalb der letzten 15 Min (900sec) liegt.


    bei Problemen oder Anregungen - einfach hier fragen.

    fg Max
    Mein Blog: Just Curious

  • #2
    AW: [Skript | PHP + MySQL] Einfacher Counter mit Reloadsperre

    Hallo

    Vielen Dank für Dein Script. Was ich noch cool fände, ist, wenn man noch die Besucherzahl von Gestern sehen könnte. Hast du eine Idee?

    Gruss Luckic

    Kommentar


    • #3
      AW: [Skript | PHP + MySQL] Einfacher Counter mit Reloadsperre

      Hallo

      hab gerade deinen Counter eingebaut hab allerdings noch ein Frage dazu.

      Wie kann ich den Startwert hochsetzen, dass z.B. nicht bei 1 angefangen wird zu zählen sondern bei 100 etc.

      Ich danke im voraus.

      Mfg Leibnitz

      Kommentar

      homepage-forum.de - Hilfe für Webmaster! Statistiken

      Einklappen

      Themen: 57.253   Beiträge: 432.195   Mitglieder: 29.677   Aktive Mitglieder: 21
      Willkommen an unser neuestes Mitglied, Euro_crem.

      Online-Benutzer

      Einklappen

      525 Benutzer sind jetzt online. Registrierte Benutzer: 1, Gäste: 524.

      Mit 9.939 Benutzern waren am 17.05.2023 um 21:38 die meisten Benutzer gleichzeitig online.

      Die neuesten Themen

      Einklappen

      • bodan
        Bits & Pretzels - Founders Festival • 24–26 September 2023 in München ....
        Bits & Pretzels - Founders Festival • 24–26 September 2023 in München.

        in diesem Posting werden zwei Events im Herbst vorgestellt: - das eine

        a. Bits & Pretzels - ein Gründerfestival
        b. Web-Summit - ja auch hier sind Gründer angesprochen.

        ...
        24.09.2023, 19:34
      • ST747
        Update unterdrücken
        Hallo,
        ich verwende den Canon-Drucker nur noch zum scannen (Printer geht nicht mehr, dafür habe ich einen exta Laserdrucker).
        Aber ab ca 1-2 Monate versucht er mit dem WIN-Update (WIN10) auch einen Update für den Cannon zu mache, das läuft dann immer auf Fehler.

        Gibt es die...
        23.09.2023, 16:35
      • bodan
        WordPress Accessibility Day 23 (27. Sept.)- ++ großes Speaker Lineup
        WordPress Accessibility Day 2023 (27. September 2023)- mit einem großen Speaker Lineup :: Barrierefreiheit hat bei WordPress einen Ort und eine eigene Konferenz widmet sich diesem Thema: Der WordPress Accessibility Day 2023 kündigt eine vielfältige Redneraufstellung an und verdoppelt die Anzahl der...
        22.09.2023, 12:13
      • ST747
        eigentümer oder depp
        hallo,

        weil hier auch ein thema datenschleuder auto war, mal ein vorgang bei mir.

        die hausverwaltung hatte zum 31.12. gekündigt und die neue war noch nicht im einsatz. das alte konto hatten die noch gekündigt.

        da ist der stadtverwaltung ein nachtlicht aufgegangen...
        20.09.2023, 15:52
      • OscarTheFish(p@k)
        ChatGPT / künstliche Intelligenz und SEO
        Meine Fragestellung hat eher allgemeineren Charakter als ein spezielles Problem zum Inhalt. Aufgrund meiner recht kurzwierigen Teilnahme an diesem Forum und der etwas an Dynamik vermissenden Entwicklung hier frage ich in die Runde, wie die zukünftige suchalgorithmische Entwicklung der bekannten Suchmaschinen...
        19.09.2023, 12:23

      Die neuesten Beiträge

      Einklappen

      Lädt...
      X
      😀
      🥰
      🤢
      😎
      😡
      👍
      👎