Anzeige

counter (grmbl)

counter (grmbl) | PSD-Tutorials.de

Erstellt von blackout, 19.11.2005.

  1. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    counter (grmbl)
    soo problem nummer 3...
    hier im forum bin ich nicht fündig geworden und google... war etwas überkompetent, sodass ich da auch nix gefunden hab.

    wie der titel schon sagt, ich hätte gern einen stinknormalen counter. ausgabe in ascii. ohne graphik, ohne "rothaarige benutzer unter 21 in den letzten 5+sqrt(17) minuten online"-statistik. einfach nur ein teil, dass bei jeder page impression eins draufrechnet.
    versucht das mal zu ergooglen. wird man krank von.

    wie dem auch sei, hat einer von euch zufällig nen link zu ner lösung? :)
     
    #1      
  2. SilentStormer

    SilentStormer Nicht mehr ganz neu hier

    Dabei seit:
    26.06.2005
    Beiträge:
    91
    Geschlecht:
    männlich
    Ort:
    Hörsching
    Kameratyp:
    Sony Alpha 350
    counter (grmbl)
    Also ich hätte ne Lösung. Das Ganze basiert auf Einspeicherung in die Datenbank (mittels PHP).

    Code (Text):
    1.  
    2. <?php
    3.    $mysqlhost="localhost";
    4.    $mysqluser="username";
    5.    $mysqlpasswd="passwort";
    6.    $mysqldbname="datenbank";
    7.  
    8.    $link = @mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);
    9.    if ($link == FALSE) {
    10.      echo "
    11.  
    12. [b]Leider kann keine Verbindung zur Datenbank hergestellt werden. Bitte versuchen Sie es später noch einmal.[/b]</p>\n";
    13.      exit();
    14.    }
    15.    mysql_select_db($mysqldbname);
    16.  
    17. // Wie lange soll IP als einmaliger Besucher gelten (in Minuten)?
    18. $time_visits=120;
    19. // Wie lange soll IP als aktiver Besucher gelten (in Minuten)?
    20. $time_online=5;
    21. // Name der Tabelle fuer die IPs
    22. $db_name_ips='ip';
    23. // Name der Tabelle fuer die Statistik selber
    24. $db_name_values='counter';
    25.  
    26.  
    27. // Loeschen
    28. mysql_query("DELETE FROM $db_name_ips
    29.              WHERE last_action<".(time()-$time_visits*60));
    30.  
    31. $result=mysql_query("SELECT ip
    32.                      FROM   $db_name_ips
    33.                      WHERE  ip='{$_SERVER['REMOTE_ADDR']}'");
    34. // Zeitstempel aktualisieren
    35. if (mysql_num_rows($result)>0) {
    36.     mysql_query("UPDATE $db_name_ips
    37.                  SET    last_action=".time()."
    38.                  WHERE  ip='{$_SERVER['REMOTE_ADDR']}'");
    39. }
    40. // IP mit Zeitstempel eintragen
    41. else {
    42.     mysql_query("INSERT INTO $db_name_ips (ip, last_action)
    43.                  VALUES ('{$_SERVER['REMOTE_ADDR']}', ".time().")");
    44.  
    45.     // Visits erhoehen
    46.     mysql_query("UPDATE $db_name_values
    47.                  SET    visits=visits+1");
    48.  
    49.     // Neue Zahl maximaler gleichzeitiger Besucher speichern
    50.     $result=mysql_query("SELECT COUNT($db_name_ips.ip) AS c_ip,
    51.                                 $db_name_values.max_online_count
    52.                          FROM   $db_name_ips,
    53.                                 $db_name_values
    54.                          WHERE  $db_name_ips.last_action>=".(time()-$time_online*60)."
    55.                          GROUP BY $db_name_values.max_online_count");
    56.     $data_counter=mysql_fetch_assoc($result);
    57.     if ($data_counter['c_ip']>$data_counter['max_online_count']) {
    58.         mysql_query("UPDATE $db_name_values
    59.                      SET    max_online_count={$data_counter['c_ip']},
    60.                             max_online_time=".time());
    61.     }
    62.     $temp=$data_counter['c_ip'];
    63.     unset($data_counter);
    64. }
    65.  
    66. // Hits erhoehen
    67. /*
    68. mysql_query("UPDATE $db_name_values
    69.              SET    hits=hits+1");
    70. */
    71.  
    72. // Aktuelle Daten auslesen
    73. $result=mysql_query("SELECT *
    74.                      FROM   $db_name_values");
    75. $data_counter=mysql_fetch_assoc($result);
    76.  
    77. // Zahl Besucher online
    78. $result=mysql_query("SELECT COUNT(ip)
    79.                      FROM   $db_name_ips
    80.                      WHERE  last_action>=".(time()-$time_online*60));
    81. list($data_counter['online_count'])=mysql_fetch_row($result);
    82.  
    83. // Datum Formatieren
    84. $tage = array("Sonntag","Montag","Dienstag","Mittwoch",
    85.   "Donnerstag","Freitag","Samstag");
    86.  
    87. $monate = array(1=>"Januar",
    88.                   2=>"Februar",
    89.                   3=>"M&rz",
    90.                   4=>"April",
    91.                   5=>"Mai",
    92.                   6=>"Juni",
    93.                   7=>"Juli",
    94.                   8=>"August",
    95.                   9=>"September",
    96.                   10=>"Oktober",
    97.                   11=>"November",
    98.                   12=>"Dezember");
    99.  
    100. $tag = date("w", $data_counter['date_start']);
    101. $tag2 = date("w", $data_counter['max_online_time']);
    102. $monat = date("n", $data_counter['date_start']);
    103. $monat2 = date("n", $data_counter['max_online_time']);
    104. $tag_ausgabe = $tage[$tag2];
    105. $monat_ausgabe = $monate[$monat2];
    106. ?>
    107. <?php echo "Besucher insgesamt: "; echo $data_counter['visits']; ?>
    108. <?php echo "Gerade online: "; echo $data_counter['online_count']; ?>
    109.  
    Damit der Code funktioniert, muss du allerdings vorher eine Tabelle in deiner Datenbank anlegen.
    Dazu einfach folgenden Code genau einmal ausführen (nicht öfter, sonst legt er dir mehrere Spalten an!!).

    Code (Text):
    1.  
    2. mysql_query("CREATE TABLE $db_name_ips (
    3.     ip          CHAR(15) NOT NULL PRIMARY KEY,
    4.     last_action INT)");
    5. mysql_query("CREATE TABLE $db_name_values (
    6.     hits                INT,
    7.     visits              INT,
    8.     max_online_count    INT,
    9.     max_online_time     INT,
    10.     date_start          INT)");
    11. mysql_query("INSERT INTO $db_name_values (hits, visits, max_online_count, max_online_time, date_start)
    12.              VALUES (0, 0, 1, ".time().", ".time().")");
    13.  
    Mhm, hoffe du kannst mit PHP zumindest ein wenig etwas anfangen.
     
    #2      
  3. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    counter (grmbl)
    von php schreiben hab ich keine ahnung, aber code verstehen ist ja nicht wirklich schwer... von der struktur her ist php cpp ja ziemlich ähnlich.

    um das script zu implementieren werd ich wohl n bisserl brauchen, aber das is ja kein problem

    danke :)

    ok noch ne doofe frage: is das nicht ein (gewaltiges) sicherheitsrisiko in einer datei auf dem server datenbank-name und -passwort gespeichert zu haben?
     
    #3      
  4. goromir

    goromir Guest

    counter (grmbl)
    nö , warum? man kann die datei nicht aufrufen ... sie wird nur an den server codiert weitergegeben damit alles funzt aber selber kann man die datei net ausführen! und wenn man die datei doch ausführen würd, erhält man net den inhalt sondern insgesamt das, was sie machen würde, also den counter grob gesagt^^
     
    #4      
  5. 2ter_Heiko

    2ter_Heiko Nicht mehr ganz neu hier

    Dabei seit:
    19.03.2005
    Beiträge:
    126
    counter (grmbl)
    Hier mal ein kleiner Textcounter:

    In die Datei, die aufgerufen werden soll (mit der Endung: .php):
    Code (Text):
    1.  
    2.  
    3. <span>
    4. <?PHP echo (include("counter.inc")); ?>
    5. </span>
    6.  
    7.  
    Eine neue Datei im selben Ordner anlegen, mit dem Namen counter.inc, mit folgendem Inhalt:
    Code (Text):
    1.  
    2. <?php
    3. $e = "wert.inc";
    4. $d = fopen($e,"r");
    5. $z = fgets($d,10);
    6. fclose($d);
    7. $z++;
    8. $d = fopen($e,"w");
    9. fwrite($d,$z);
    10. fclose($d);
    11. return $z;
    12. ?>
    13.  
    Danach fehlt nur noch eine Datei mit dem Namen wert.inc im selben Ordner.

    mfg,
    Heiko
     
    #5      
  6. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    counter (grmbl)
    @goromir
    hmm ok also sollte man auf jeden fall die dir-zugriffsrechte auf deny stellen, sonst kann ja einfach einer die scriptdatei laden...
    ich komm noch nich so damit klar dass php rein serverseitig ist, obwohl ich das 100% weiß... nur verwechsel ich das ganz gern :)
     
    #6      
  7. Bjoern

    Bjoern Guest

    counter (grmbl)
    http://www.css-computer.net/counter/index.php

    diesen Counter kann ich empfelen...den habe ichauch.

    "die Funktionen unseres kostenlosen Counter - Besucherzähler :
    - kostenloser Counter für alle
    - auch als "unsichtbarer Besucherzähler - Counter " einsetzbar
    - keine Werbebannern im Counter
    - relativ einfacher Einbindung des Counter
    - umfangreiche Counter Statistik
    - Counter kann auch Ihre Downloads zählen
    - Counter - Besucherzähler ist direkt nach der Anmeldung verfügbar
    - Übernahme des Counter Zählerstandes von anderen Besucherzählern
    - die häufigsten Browser
    - über welche Suchworte wurde man gefunden
    - welche Betriebssysteme werden benutzt
    - welche Bildschirm-Auflösungen benutzen Ihre User
    .... und vieles vieles mehr"
     
    #7      
  8. blackout

    blackout Schaf im Wolfspelz

    Dabei seit:
    12.09.2005
    Beiträge:
    3.359
    Geschlecht:
    männlich
    Ort:
    Würzburg
    Kameratyp:
    Rollei 35 S
    counter (grmbl)
    @silentstormers script

    ich bekomm nen fehler -.-


    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/scn/infinity_test/counter.php on line 32

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/scn/infinity_test/counter.php on line 53

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/scn/infinity_test/counter.php on line 72

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/scn/infinity_test/counter.php on line 78


    ich interpretier den so, dass da ungültige argumente für die beiden funktionen verwendet werde, glaube aber, dass ich mich fatal irre ;)
    was mach ich falsch?
     
    #8      
  9. HoLgAy

    HoLgAy Nicht mehr ganz neu hier

    Dabei seit:
    12.03.2005
    Beiträge:
    58
    Geschlecht:
    männlich
    Ort:
    Aachen
    counter (grmbl)
    Ist die Datenbank denn korrekt mit den richtigen Tabellen etc.??

    Füge mal an alle Zeilen die so aussehen:

    Code (Text):
    1.  
    2. $result=mysql_query("SELECT ip
    3.                      FROM   $db_name_ips
    4.                      WHERE  ip='{$_SERVER['REMOTE_ADDR']}'");
    5.  
    Folgendes hinten dran (or die.....):

    Code (Text):
    1.  
    2. $result=mysql_query("SELECT ip
    3.                      FROM   $db_name_ips
    4.                      WHERE  ip='{$_SERVER['REMOTE_ADDR']}'") or die ("Fehler: ".mysql_error());
    5.  
    Dies gibt dir eine "genaue" fehlermeldung zurück in der du besser sehen kannst, was nicht stimmt.
    Also evtl. SQL-fehler oder Tabelle nicht da oder so ...

    Dann schreib den Fehler hier nochmal rein.

    greetZ

    HoLgAy
     
    #9      
x
×
×
teststefan