PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

Besucherzähler (MySQL) mit IP-Sperre

Zurück zur Übersicht

Ein Besucherzähler, der mit MySQL arbeitet und für eine einstellbare Zeit Anfragen gleicher IP-Adressen nicht erneut zählt. Es werden weder Cookies noch Sessions verwendet.

Zunächst muss hierzu eine neue Tabelle angelegt werden. Hier ist der fertige MySQL-Befehl:
 PHP 
1:
2:
3:
4:
5:
6:
7:

CREATE TABLE IF NOT EXISTS `counter` (
`cid` INT( 10 ) NOT NULL AUTO_INCREMENT ,
`ip` VARCHAR( 15 ) NOT NULL ,
`timestamp` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `cid` )
)


In dem folgenden Skript müssen noch der Ort der Datenbank ($db_location), der Benutzername ($db_username), das Passwort ($db_passwort) und der Name der Datenbank ($db_name) eingetragen werden.
Zusätzlich kann in der Variablen $ip_block_minutes eingetragen werden, für wie viele Minuten eine gespeicherte IP-Adresse nicht erneut gezählt werden soll. Die Einheit ist "Minuten" und der Standardwert beträgt 30 Minuten.

Noch ein Wort zur Lizenz:
Das Skript darf selbstverständlich völlig kostenlos eingesetzt werden und auch verändert werden. Ich möchte allerdings darum bitten, diesen Code nicht als eigenes Skript auszugeben oder sogar ein eigenes Copyright daruf zu setzen!!!

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
<?php
/* *********************************************
   MySQL-Besucherzähler mit IP-Sperre
   ---------------------------------------------
   by [LC] für php-einfach.de , Oktober 2008
   ---------------------------------------------
   Das Skript darf frei genutzt werden, jedoch
   darf weder dieser Kasten entfernt noch ein
   eigenes Copyright o.Ä. eingefügt werden!
   ---------------------------------------------
  ********************************************* */
$db_location ""//Ort der Datenbank (normalerweise "localhost")
$db_username ""//Benutzername für DB-Zugriff
$db_passwort ""//Passwort für DB-Zugriff
$db_name ""//Name der Datenbank

$ip_block_minutes 30//Anzahl der Minuten, in der eine IP nicht neu gezählt wird

/* *******************************************
   * AB HIER KEINE ÄNDERUNGEN MEHR VORNEHMEN *
   ******************************************* */

@mysql_connect($db_location$db_username$db_passwort) or die ("Verbindung fehlgeschlagen<br />"); 
@
mysql_select_db($db_name) or die ("Keine Datenbank mit angegebenen Namen vorhanden<br />"); 


$timestamp date(U);
$ip $_SERVER['REMOTE_ADDR'];
$max_timestamp_ip date(U) - ($ip_block_minutes 60); //Der Aufnahmezeitpunkt der IP darf nicht kleiner als dieser Wert sein

$test mysql_query("SELECT * FROM counter WHERE ip='$ip' AND timestamp >= '$max_timestamp_ip'"); //Testen, ob es bereits eine Eintrag über eine identische IP gibt, der noch innerhalb des Gültigkeitsrahmens liegt

if(mysql_num_rows($test) != 1) {
 
mysql_query("INSERT INTO counter SET ip='$ip', timestamp='$timestamp'"); //Sonst einen neuen Eintrag vornehmen
}

$counter mysql_num_rows(mysql_query("SELECT timestamp FROM counter")); //Gesamtzahl der eingetragenen Zeilen ist die Besucheranzahl

echo $counter;

?>


Kommentare

Zurück zur Übersicht

Autor Stephen Falken

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012