Ergebnis 1 bis 3 von 3

Thema: eigenes Counter Script

  1. #1
    Meister(in) Avatar von DarkEmperor
    Registriert seit
    23.04.2010
    Ort
    Freital
    Alter
    24
    Beiträge
    356
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    5

    Idee eigenes Counter Script

    Da ich mit keinem der ganzen Grafischen Counter zufrieden bin/war und ich außerdem reinen Text wollte habe ich mir mal schnell mein eigenes geschrieben mit 3 Werten die zur Analyse bereit stehen aussehen tut das ganze dann ca. so:
    Seitenaufrufe: 99 | Besucher: 27 | unterschiedliche Besucher: 26
    Zu erwähnen wäre das das ganze auf einem URl-System besteht welches immer index.php?site=Seitenname ist, falls das bei euch nicht so ist müsstet ihr das ganze leicht abwandeln, dazu aber später.

    Als erstes zu den DB-Tabellen:
    counter_pages
    page count
    home 5
    varchar(20) varchar(50)





    Achja, für "count" ist ein Standard-Wert von 0 zu setzen.

    counter_user

    ip timestamp anzahl
    000.000.00.000 1314370503 1
    varchar(20) varchar(50) varchar(50)

    Und hier bekommt die Spalte "timestamp" einen Wert der mehr als 24h zurückliegt, z.B.: 1314370503 und "anzahl" bekommt einen Standard-Wert von 1 zugewiesen.
    Das fette sind die Spaltenbezeichnungen und das fett-unterstrichene sind die Primärschlüssel, für alles habe ich die Kollation "latin1_german1_ci" verwendet.

    Dann zu dem php-Script welches ihr am besten per include auf der index.php Seite einbindet oder falls ihr nicht mit index.php?site=Seitenname arbeitet dann auf jeder Seite.

    PHP-Code:
    <?php 
    // DB-Verbindung herstellen
    include "connection.php"

    // die IP des Betrachters eintragen (durch Primärschlüssel gibt es keine doppelt)
    // wer die Daten seiner Besucher sensibler behandeln will kann auch auf md5($_SERVER['REMOTE_ADDR']) zurückgreifen
    $sql_insert_ip "INSERT INTO ".
                     
    "counter_user (ip, timestamp ) ".
                     
    "VALUES ('".$_SERVER['REMOTE_ADDR']."', '".
                     
    time()."')";
    mysql_query ($sql_insert_ip);

    // den Datensatz auslesen der zu der IP des Betrachters gehört
    // falls ihr oben auf die md5() Verschlüsselung zurückgegriffen habt dann müsst ihr die hier auch einbauen
    $sql_select_ip "SELECT ".
           
    "* ".
           
    "From ".
           
    "counter_user ".
           
    "WHERE ".
    "(ip = '".$_SERVER['REMOTE_ADDR']."')";
    $result_ip mysql_query($sql_select_ip);
    while(
    $row_ip mysql_fetch_array($result_ip)) {

    // ermitteln ob der letzte Besuch der IP mehr/genau 24h vorbei ist
    $abstand time() - ($row_ip['timestamp'] + (24*60*60));
    if(
    $abstand >= 0) {
    // wenn ja dann wird hier die Anzahl seiner Besuche um 1 erhöt
    $row_ip['anzahl']++;
    // den aktuellen timestamp und die Anzahl seiner Besucher eintragen
    // falls ihr oben auf die md5() Verschlüsselung zurückgegriffen habt dann müsst ihr die hier auch einbauen
    $sql_update_ip "UPDATE counter_user ".
    "SET anzahl='".$row_ip['anzahl']."', timestamp='".time()."' ".
           
    "WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
    mysql_query($sql_update_ip); }
    }

    // auslesen wie aller Datensätze in der User-Liste
    $sql_select_num "SELECT ".
                     
    "* ".
                     
    "From ".
                     
    "counter_user ";
    $result_num mysql_query($sql_select_num);
    // die Anzahl aller Datensätze ermitteln
    $num_rows_num mysql_num_rows($result_num);
    // und hier werden die Besuchsanzahlen von jedem Besucher zusammengerechnet
    $count_user '0';
    while(
    $row_num mysql_fetch_array($result_num)) {
    $count_user $count_user $row_num['anzahl']; }

    // HIER die Änderung einfügen falls nötig

    // so und hier werden jetzt zu jeder Seite einzeln alle Aufrufe (die nicht vom Cache geschehen) zu dem passenden Datensatz eingetragen
    // auslesen des Datensatzes der zu der GET-Variable "site" passt
    // hier wäre die Änderung vorzunehmen falls ihr nicht index.php?site=Seitenname verwendet
    $sql_select_page "SELECT ".
                       
    "* ".
                       
    "From ".
                       
    "counter_pages ".
                       
    "WHERE ".
                       
    "(page = '".$_GET['site']."')";
    $result_page mysql_query($sql_select_page);
    while(
    $row mysql_fetch_array($result_page)) {

    // für den passenden Datensatz wird hier die Anzahl der Besuche um 1 erhöt und wieder in die datenbank eingetragen
    // hier wäre dann auch die 2. Stelle an der etwas geändert werden müsste falls ihr nicht mit index,php?site=Seitenname arbeitet
    $count_page $row['count'] + 1;
    $sql_update_page "UPDATE counter_pages ".
           
    "SET count='".$count_page."' ".
           
    "WHERE page='".$_GET['site']."'";
    mysql_query($sql_update_page); }
    ?>
    So, dann zu der Ausgabe der Variablen, funktioniert nur auf Seiten wo auch das Script eingebunden ist:
    HTML-Code:
    Seitenaufrufe: <?php echo $count_page; ?> | Besucher: <?php echo $count_user; ?></span> | unterschiedliche Besucher: <?php echo $num_rows_num; ?>
    gestalten müsstet ihr es euch noch selber, ich habe es für meinen Footer z.B. so gemacht:
    HTML-Code:
    <span class="description">Seitenaufrufe: <span style="color: #000000;"><?php echo $count_page; ?></span> | Besucher: <span style="color: #000000;"><?php echo $count_user; ?></span> | unterschiedliche Besucher: <span style="color: #000000;"><?php echo $num_rows_num; ?></span></span>
    die CSS dazu sieht so aus:
    Code:
    body {
    background-color: #666666;
    font-family: Arial, sans-serif;
    font-size: 12px;
    font-weight: normal;
    font-style: normal;
    text-decoration: none;
    color: #000000;
    letter-spacing: 0em;
    white-space: pre-wrap; }
    
    .description {
    font-family: Arial, sans-serif;
    font-size: 11px;
    font-style: normal;
    color: #666666;
    text-decoration: none; }
    So, nun zu der Änderung die gemacht werden muss wenn ihr den Dateinamen nicht per GET-Variable auslesen könnt:
    PHP-Code:
    // Dateinamen inklusive Endung(.html .php etc.) auslesen
    $site substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); 
    Und dann an den zwei Stellen wo $_GET['site'] vorkommt das ganze durch $site ersetzen und schon ist es wieder fertig, in der DB müsst ihr dann nur noch die Dateinamen mit der Endung eintragen.

    Alle die das per GET-Variable lösen können müssen dann alle GET-Variablen-Inhalte wofür sie das haben wollen in die DB eintragen und dann läuft das Script.

    Ich hoffe, dass ich euch damit etwas weiterhelfen konnte und falls es von den Profis noch Kritik daran gibt dann immer her damit, und falls ich das Script irgendwie erweiter schreibe ich es natürlich auch noch.

    MfG
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: eigenes Counter Script

    Code habe ich mir noch nicht angeschaut, nur grad mal überflogen, und zu deinen Tabellen muss ich sagen: Katastrophe.
    Wie zur Hölle kommst du auf die Idee alle Spalten als VARCHAR zu deklarieren???

    IP-Adressen werden als unsigned INT(10) gespeichert, zum schreiben bzw. auslesen gibt es die SQL-Funktionen INET_ATON und INET_NTOA.
    Timestamps werden als Timestamp (oder zur Not Datetime) gespeichert, aber ganz sicher nicht als VARCHAR, das ist ja noch schlimmer als INT.
    Und wie kommst du bei `count`/`anzahl` darauf als Feldtyp VARCHAR zu nehmen? Was soll denn eindeutiger ein INT-Wert sein als ein Counter?
    Davon abgesehen ist auch die unterschiedliche Benennung mit deutschen und englischen Begriffen nicht schön. Man nimmt entweder englische Bezeichner (zu empfehlen) oder deutsch, aber kein MischMasch.

    Ich würde außerdem nicht nur anhand der IP-Adresse nach einmaligen Besuchern differenzieren. Was ist mit Schulen, Unis, Inet-Cafes undundund?
    http://phpforum.de/forum/showthread.php?t=216531
    Schau dir da mal die Punkte Browsersignatur/Browsermarker an um einen Besucher etwas sicherer eindeutig zu identifizieren.

    Also grundlegend mag das schon ganz nett sein, ist aber sicherlich noch ausbaufähig.

    Nicht böse gemeint, sondern als konstruktive Anregung.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  3. #3
    Meister(in) Avatar von Teron Gerofied
    Registriert seit
    26.01.2008
    Ort
    serverraum
    Alter
    26
    Beiträge
    347
    Danke
    0
    Bekam 1 mal "Danke" in 1 Posting

    Standard AW: eigenes Counter Script

    Da kann ich SinnlosS nur zustimmen - wieso deklarierst du alles als varchar?? Ich hab das Script jetzt auch nur mal überflogen aber inkrementierst du die Seitenbesucher wirklich in PHP und übergibst sie dann wieder der Tabelle ??
    PHP-Code:
    if(isset($this) || !isset($this)){ // that's the question... 

Ähnliche Themen

  1. Suche Online Text Counter Script
    Von mischalemaus im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 16.08.2009, 16:09
  2. Ich bräuchte ein Script für ein eigenes Forum
    Von Tweety im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 08.07.2008, 16:13
  3. Script: fürn Counter?
    Von im Forum Script-Archiv
    Antworten: 5
    Letzter Beitrag: 23.12.2005, 12:16
  4. Suche Counter und Newsletter-Script
    Von Markus im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 26.08.2004, 18:00
  5. Script für eigenes Gästebuch wird benötigt
    Von Tweety im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 02.05.2004, 12:07

Stichworte

Berechtigungen

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