mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 04.06.2020 14:03 Benutzername: Passwort: Auto-Login

Thema: einfacher Counter vom 10.07.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> einfacher Counter
Seite: 1, 2  Weiter
Autor Nachricht
nickdesign
Threadersteller

Dabei seit: 28.02.2007
Ort: South London
Alter: 39
Geschlecht: Männlich
Verfasst Fr 10.07.2009 21:36
Titel

einfacher Counter

Antworten mit Zitat Zum Seitenanfang

Hallöle...


sagt mal, ich bin leider kein PHP Freak, nur sehr begrenzte PHP im Petto.
Wie kann ich es realisieren, das ein Counter auf allen Seiten angezeigt werden soll?

Sprich da soll nur stehen "Es waren bisher xxxx Besucher auf unseren Seiten" xxxx soll halt der Counter sein, muss ich das mit einem Iframe realisieren und wisst Ihr wo ich so einen einfachen zahlen Counter finde? Free versteht sich?
  View user's profile Private Nachricht senden
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 41
Geschlecht: Männlich
Verfasst Fr 10.07.2009 22:27
Titel

Antworten mit Zitat Zum Seitenanfang

Wenn du mir eine professionelle Webseite zeigen kannst, die so etwas verwendet - dann denke ich mal nach *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
nickdesign
Threadersteller

Dabei seit: 28.02.2007
Ort: South London
Alter: 39
Geschlecht: Männlich
Verfasst Fr 10.07.2009 22:37
Titel

Antworten mit Zitat Zum Seitenanfang

Eistee hat geschrieben:
Wenn du mir eine professionelle Webseite zeigen kannst, die so etwas verwendet - dann denke ich mal nach *zwinker*


*lol* wenn Ich dir jetzt erzähle das Kundin das haben möchte und du mir dann sagst, "als MG solltest du Kunden soetwas ausreden" dann dreh ich ab *lol*! Ich weiss das selber nur die Kunden will das drinn haben, komme was wolle... alles schon mit Ihr besprochen... die hat schon n Stat tool drinn, wo Sie sich einloggen kann und alles sehen kann nur will sie unbedingt das es auch angezeigt wird... -.-


edit//

ick hab auch schon was gefunden,
http://www.html.de/tutorials/15269-php-einfacher-counter-mit-reload-ip-sprerre-basierend-auf-mysql.html

Zitat:
counter.sql

Code:

CREATE TABLE zugriffe
    (
    z_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    z_ip VARCHAR(50) NOT NULL,
    z_datum VARCHAR(20)
    );


nachdem die tabelle steht, muss zur datenbank verbindung aufgenommen werden, vorher aber erst konfigurationsdaten ageben:
config.inc.php

Code:
<?php
//eine variable als array deklarieren, um mehrere werte in einem zusammenzufassen
$_access = array();

$_access['host'] = 'localhost'; //kann abweichen, ist aber meistens "localhost"
$_access['user'] = ''; //der benutzername
$_access['pass'] = ''; //das passwort
$_access['name'] = ''; //der name der datenbank
?>



jetzt noch die verbindung schreiben:
connect.inc.php

Code:
<?php
if(!$conn = mysql_connect($_access['host'], $_access['user'], $_access['pass']))
    {
    echo 'verbindung zu '.$_access['host'].' fehlgeschlagen';
    exit();
    }

if(!$db_select = mysql_select_db($_access['name']))
    {
    echo 'die erforderliche datenbank antwortet nicht';
    exit();
    }
?>



nun das zählerskript, das eigentlich relativ simpel gebaut ist:
counter.php

Code:
<?php
//konfiguration und verbindungsdaten holen
include_once('config.inc.php');
include_once('connect.inc.php');

//abfrage des aktuellen status der bestehenden IPs
$result = mysql_query("SELECT z_ip FROM zugriffe WHERE z_ip = '".$_SERVER['REMOTE_ADDR']."' ") or die(mysql_error());

//ist die aktuelle IP bereits vorhanden?
if(mysql_num_rows($result) != 1)
    {
    //noch nicht? dann eintragen...
    $sql =     "    INSERT INTO
                zugriffe VAULES
                    (
                    '',
                    '".$_SERVER['REMOTE_ADDR']."',
                    '".date('d m Y')."'
                    )
            ";
   
    mysql_query($sql) or die (mysql_error());
    }
        else
            {
            //doch schon drin? dann ignorieren...
            exit();
            }
?>



zum anzeigen der zugriffe ist folgendes skript zuständig (kann selbstverständlich noch ausgebaut und mit passwortabfrage ausgestattet werden):
zugriffe.php

Code:
<?php
//konfiguration und verbindungsdaten holen
include_once('config.inc.php');
include_once('connect.inc.php');

$result = mysql_query("SELECT z_ip FROM zugriffe")or die(mysql_error());

$zugriffe = mysql_num_rows($result);

echo 'zugriffe bisher: <strong> '.$zugriffe.' </strong>';
?>



Ich raff nur die Counter.php nicht, soll ich das jetzt in den header einfügen?


Zuletzt bearbeitet von nickdesign am Fr 10.07.2009 22:41, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
bluedom

Dabei seit: 26.10.2003
Ort: Hamburg
Alter: -
Geschlecht: Männlich
Verfasst Sa 11.07.2009 08:48
Titel

Antworten mit Zitat Zum Seitenanfang

Sorry für meine Ausdrucksweise, aber das ist der beschissenste Counter den ich jemals gesehen habe.

1.
Es wird immer die IP des Besuchers gespeichert und bleibt auch so in der DB drin was aber nicht sein darf. IP Adressen sollten bei Counter-Funktionen max. 24 Stunden gespeichert werden. Hat jemand eine feste IP (wie es z.B. in Firmennetzwerke vorkommt) wird der Besucher immer nur einmal gezählt, egal wie oft er die Seite innerhalb von Monaten aufruft.

2.
Wenn du die Datei counter.php in deinem header einbindest und ein Besucher zweimal die Seite besucht passiert folgendes: Die Seite wird nicht geladen.
Der Code:
Code:
        else
            {
            //doch schon drin? dann ignorieren...
            exit();
            }

....sagt nämlich das er das Script beenden soll (exit) wenn der Besucher schon in der DB ist.

3.
Code:
$zugriffe = mysql_num_rows($result);

Verlangsamt den Seitenaufbau weil die Anzahl der Datensätze in der DB gezählt werden. (Bei kleinen Seiten sollte aber das kaum spürbar sein)

Richtig ist für ein simples Counter Script:
1. Eine Tabelle erzeugen wo einfach nur die Anzahl der Zugriffe als nummerischen Wert gespeichert werden.
2. Eine Tabelle erzeugen wo IP, Browserdaten, und Zugriffszeitpunkt gespeichert werden, für 24 Stunden.

Schau mal besser ob du nicht was anderes findest, da gibt es ja sehr viel im Netz...
  View user's profile Private Nachricht senden
nickdesign
Threadersteller

Dabei seit: 28.02.2007
Ort: South London
Alter: 39
Geschlecht: Männlich
Verfasst Sa 11.07.2009 09:02
Titel

Antworten mit Zitat Zum Seitenanfang

bluedom hat geschrieben:

Schau mal besser ob du nicht was anderes findest, da gibt es ja sehr viel im Netz...


Danke für die Hilfe, habe auch bereits einen Counter gefunden und eingebaut.
Für mich war wichtig das er die IPs speichert damit nicht doppelt gezählt wird pro seite, habe einen gefunden der 24std die IP speichert.


counter.php
Code:
<?php

/**
* @author    Eric Sizemore <admin@secondversion.com>
* @package   SV's Simple Counter
* @link      www.secondversion.com
* @version   1.7.0
* @copyright (C) 2006 - 2008 Eric Sizemore
* @license   {@see LICENSE.txt} GNU Public License
*/

// #################### Define Important Constants ####################
// There should be no need to edit these
define('COUNT_FILE', 'counter/logs/counter.txt');
define('IP_FILE', 'counter/logs/ips.txt');

// ######################## USER CONFIGURATION ########################
// Edit the following.. true = yes, false = no

// Use file locking?
define('USE_FLOCK', true);

// Count only unique visitors?
define('ONLY_UNIQUE', true);

// Show count as images?
define('USE_IMAGES', false);

// Path to the images
define('IMG_DIR', 'counter/images/');

// Image extension
define('IMG_EXT', '.gif');

// ############################ Functions #############################
/**
* We use this function to open, read/write to files.
*
* @param  string   Filename
* @param  string   Mode (r, w, a, etc..)
* @param  string   If writing to the file, the data to write
* @return mixed
*/
function fp($file, $mode, $data = '')
{
   if (!file_exists($file) OR !is_writable($file))
   {
      trigger_error("Error: '<code>" . htmlspecialchars($file) . "</code>' does not exist or is not writable.");
   }

   if (!($fp = @fopen($file, $mode)))
   {
      trigger_error("Error: '<code>" . htmlspecialchars($file) . "</code>' could not be opened.");
   }

   if (USE_FLOCK AND @flock($fp, LOCK_EX))
   {
      if ($mode == 'r')
      {
         return @fread($fp, filesize($file));
      }
      else
      {
         @fwrite($fp, $data);
      }
      @flock($fp, LOCK_UN);
   }
   else
   {
      if ($mode == 'r')
      {
         return @fread($fp, filesize($file));
      }
      @fwrite($fp, $data);
   }
   @fclose($fp);
}

/**
* Get the users ip address.
* Pulled from my {@link http://www.domainportfolio.us Domain Portfolio} project.
*
* @param  none
* @return string
*/
function get_ip()
{
   $ip = my_getenv('REMOTE_ADDR');

   if (my_getenv('HTTP_X_FORWARDED_FOR'))
   {
      if (preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', my_getenv('HTTP_X_FORWARDED_FOR'), $matches))
      {
         foreach ($matches[0] AS $match)
         {
            if (!preg_match('#^(10|172\.16|192\.168)\.#', $match))
            {
               $ip = $match;
               break;
            }
         }
         unset($matches);
      }
   }
   else if (my_getenv('HTTP_CLIENT_IP'))
   {
      $ip = my_getenv('HTTP_CLIENT_IP');
   }
   else if (my_getenv('HTTP_FROM'))
   {
      $ip = my_getenv('HTTP_FROM');
   }
   return $ip;
}

/**
* Returns an environment variable. Based on PMA_getenv from phpMyAdmin.
*
* @param  string  Variable name, eg: PHP_SELF
* @return string
*/
function my_getenv($varname)
{
   if (isset($_SERVER[$varname]))
   {
      return $_SERVER[$varname];
   }
   else if (isset($_ENV[$varname]))
   {
      return $_ENV[$varname];
   }
   else if (getenv($varname))
   {
      return getenv($varname);
   }
   return '';
}

// ######################## Start Main Script #########################
// Get current count
$count = fp(COUNT_FILE, 'r');

// Do we only want to count 'unique' visitors?
if (ONLY_UNIQUE)
{
   // Get visitor ip and check against our ip log
   $ip = get_ip();
   $ips = trim(fp(IP_FILE, 'r'));
   $ips = preg_split("#\n#", $ips, -1, PREG_SPLIT_NO_EMPTY);
   $visited = (bool)(in_array($ip, $ips));

   // They've not visited before
   if (!$visited)
   {
      fp(IP_FILE, 'a', "$ip\n");
      fp(COUNT_FILE, 'w', $count + 1);
   }
   // Memory saving
   unset($ips);
}
else
{
   // No, we wish to count all visitors
   fp(COUNT_FILE, 'w', $count + 1, USE_FLOCK);
}

// Do we want to display the # visitors as graphics?
if (USE_IMAGES)
{
   $count = preg_split("##", $count, -1, PREG_SPLIT_NO_EMPTY);
   $len = count($count);
   $display = '';

   for ($i = 0; $i < $len; $i++)
   {
      $display .= '<img src="' . IMG_DIR . $count[$i] . IMG_EXT . '" border="0" alt="' . $count[$i] . '" />&nbsp;';
   }
   echo $display;
}
else
{
   // Nope, let's just show it as plain text
   echo $count;
}

?>


und der Code zum einbinden in die Seite

Code:
<?php include('counter.php'); ?>


jetzt haben wir nur noch zwei TXT Dateien die die Ips und Hits speichern counter.txt und ips.txt und das wars dann!
Natürlich müssen die txt datein auch die richtigen rechte bekommen. Der Counter läuft gut und zählt auch nichts doppelt! Lächel ganz easy der counter so wie man es haben wollte.
  View user's profile Private Nachricht senden
bluedom

Dabei seit: 26.10.2003
Ort: Hamburg
Alter: -
Geschlecht: Männlich
Verfasst Sa 11.07.2009 09:54
Titel

Antworten mit Zitat Zum Seitenanfang

Jep, der ist ganz gut...

Aber wie Eistee schon angemerkt hat... Counter auf der Website anzeigen ist wirklich etwas oldschool *hehe*
  View user's profile Private Nachricht senden
ApfelQFeierabend

Dabei seit: 05.04.2008
Ort: Regensburg
Alter: 33
Geschlecht: Männlich
Verfasst Sa 11.07.2009 12:15
Titel

Antworten mit Zitat Zum Seitenanfang

ehm wenns nur die kundin diesen kagg sehen will dann gibts ja google analytics
  View user's profile Private Nachricht senden
airball

Dabei seit: 28.08.2002
Ort: BHV / HH
Alter: 34
Geschlecht: Männlich
Verfasst Sa 11.07.2009 12:21
Titel

Antworten mit Zitat Zum Seitenanfang

Oder man bindet irgendwo diesen unsichtbaren Netstat-Counter ein, falls es die noch gibt. Grins
  View user's profile Private Nachricht senden
 
Ähnliche Themen Counter
unsichtbarer counter
counter faken
Valider Counter?
einfacher php shop
[PS] Kapitel 01 - Einfacher Glanz
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.