|
|
|
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
|
|
|
|