Counter Programmieren

  • PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Counter Programmieren

    Hallo Leute

    Ich möchte einen Counter für meine page haben welcher nur die Visits und nicht die Hits zählt. Das heisst es soll irgendwie die IP des Besuchers abgespeichert werden, damit er nicht 2mal gezählt wird.

    Der counter sollte im Textformat sein. Also die Zahlen sollten keine Bilder sein.

    der counter soll diese form haben:

    111 Besucher seit 01.02.2007

    Die gesammte schriftart (inkl. zahlen des counters) und Farbe sollte veränderbar sein.

    Kann mir da einer helfen oder hat vllt sogar jemand nen code dafür herumflattern?

    Gruss
  • GO GL EEEEEE

    Ganz ehrlich es gibt soo viele fertige Counterscripts im netz - das dauert nicht mal so lange wie diese Antwort zu erstellen einen zu suchen...
    Eigentlich find ich das ja nicht gut...


    Zur Zeit bin ich nicht da! Ich werde also auch nicht Antworten!
  • Ranzboulette schrieb:

    GO GL EEEEEE

    Ganz ehrlich es gibt soo viele fertige Counterscripts im netz - das dauert nicht mal so lange wie diese Antwort zu erstellen einen zu suchen...


    hmm hab mich schon dumm und dämlich gesucht, hab nur welche gefunden, welche als zahlen images verwenden und das will ich nicht...
    möchte halt die zahlen auch in einer bestimmten schriftart welche ich verändern kann...
  • Okay... ich gebe dir mal das Wichtigste, was du brauchst, um sowas zu programmieren.

    Am besten mit ner MySQL Tabelle.
    Also einmal brauchst du eine Tabelle, wo die IPs gespeichert werden und einmal eine, wo der Aktuelle Stand liegt.

    Quellcode

    1. CREATE TABLE `counter` (`count` int(10) NOT NULL DEFAULT 0);
    2. CREATE TABLE `ips` (`ip` varchar(15), `date` DATETIME);


    So, dann brauchst du, die Abfrage, ob die UserIP bereits in ips eingetragen ist. Günstig ist es erst die verfallenden Einträge zu löschen.

    SQL-Abfrage

    1. DELETE * FROM `ips` WHERE DATE_SUB(NOW(), INTERVAL 3 HOUR) > `date`;


    Dann nur noch kucken, ob die UserIP unter den ist, die über geblieben sind:

    SQL-Abfrage

    1. SELECT COUNT(*) as `ipintable` FROM `ips` WHERE `ip` = '$ip';


    Wenn dies nun kein Eintrag ergibt, dann einfach den Zähler um eins erhöhen.

    SQL-Abfrage

    1. UPDATE `counter` SET `count` = (`count`+1);


    Damit bei reload, nicht wieder um eins erhöht wird, einfach in ips die IP einfügen.

    SQL-Abfrage

    1. INSERT INTO `ips` (`ip`,`date`) VALUES ('$ip',NOW())


    Dann nur noch count abfragen und fertig ist die Geschichte.

    SQL-Abfrage

    1. SELECT `count` FROM `counter`;


    Der dazugehörige PHP-Code, sollte keine Schwierigkeit darstellen, aber ich posten ihn trotzdem mal, wie es aussehen könnte. (Ich habe das mal in eine sehr strukturierte Form gebracht)

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. include 'config.php';
    4. $connect = mysql_connect($mysql_host,$mysql_user,$mysql_pass);
    5. mysql_select_db($mysql_db) OR die(mysql_error());
    6. $sql = "DELETE
    7. FROM
    8. `ips`
    9. WHERE
    10. DATE_SUB(NOW(), INTERVAL 3 HOUR) > `date`";
    11. mysql_query($sql) OR die(mysql_error());
    12. $sql = "SELECT
    13. COUNT(*) as `ipintable`
    14. FROM
    15. `ips`
    16. WHERE
    17. `ip` = '".$_SERVER['REMOTE_ADDR']."'";
    18. $result = mysql_query($sql) OR die(mysql_error());
    19. $row = mysql_fetch_assoc($result) OR die(mysql_error());
    20. if($row['ipintable'] == 0) {
    21. $sql = "INSERT INTO `ips`
    22. (`ip`,`date`)
    23. VALUES
    24. ('".$_SERVER['REMOTE_ADDR']."',NOW())";
    25. mysql_query($sql) OR die(mysql_error());
    26. $sql = "UPDATE
    27. `counter`
    28. SET
    29. `count` = (`count`+1)";
    30. mysql_query($sql) OR die(mysql_error());
    31. }
    32. $sql = "SELECT
    33. `count`
    34. FROM
    35. `counter`";
    36. $result = mysql_query($sql) OR die(mysql_error());
    37. $row = mysql_fetch_assoc($result) OR die(mysql_error());
    38. echo "Sie sind der ".$row['count'].". Besucher seit dem XX.YY.ZZZZ.";
    39. mysql_close($connect) OR die(mysql_error());
    40. ?>
    Alles anzeigen


    Hoffe das hilft dir.
    Gruß
    Broken Sword