Hab hier noch ne Version mit 24Stunden-IP-Sperre und Client-Logfunktion
Das Script vergleicht die IP-Adresse des Benutzers, der die Seite besucht, mit denen die schon in der Sperrdatei sind.
Falls IP in der besagten Datei vorhanden, wird noch geprüft ob der letzte Besuch vor 24 Stunden war. (IP Adressen wechseln nach 24 Stunden bei den meisten DSL-Anschlüssen, so ist eine genauere Anzeige möglich ).
Zu der Log-Funktion.
Das Script speichert für jeden Client folgende Daten in einer Datei ab.
o IPAdresse
o Hostname
o woher er kommt (falls die Seite verlinkt war)
o und die Kennung des Browser des Clients
Die Besuchszeit ergibt sich aus dem Dateinamen. ( time() )
counter.php
Code:
<?php
function logaccess() {
//--------------------------------------------------
$basedir = "./";
$logpath = "./";
$ip = getenv("REMOTE_ADDR");
$host = gethostbyaddr($ip);
$timestamp = time();
$log = time()."\n";
$log .= $ip."\n";
$log .= $host."\n";
$log .= $_SERVER["HTTP_USER_AGENT"]."\n";
$log .= $_SERVER["HTTP_REFERER"]."\n";
//--------------------------------------------------
$blockedips = @file($basedir."blockip");
$do_count = TRUE;
if( count($blockedips) != 0 ) {
for( $i = 0; $i != count($blockedips); $i++ ) {
$ipdata = explode(",", $blockedips[$i]);
if( trim($ipdata[0]) == $ip ) { $do_count = FALSE; }
if( trim($ipdata[1]) < time()) { $blockedips[$i] = ""; }
}
}
//--------------------------------------------------
$counter = @file($basedir."count");
$count = intval($counter[0]);
$cf = @fopen($basedir."count", "w");
if( $do_count ) {
//--------------------------------------------------
$blockips = implode("\n", $blockedips);
$blockips .= $ip.",".(time() + 86400)."\n";
$bip = @fopen($basedir."blockip", "w");
@fwrite($bip, $blockips);
@fclose($bip);
//--------------------------------------------------
$count++;
//--------------------------------------------------
$clientlog = @fopen($logpath.$timestamp, "w");
@fwrite($clientlog, $log);
@fclose($clientlog);
//--------------------------------------------------
}
@fwrite($cf, $count);
@fclose($cf);
//--------------------------------------------------
return $count;
//--------------------------------------------------
}
?>
Aufruf des Counters in neuer DateiCode:
<?php
include("counter.php");
echo logaccess();
?>