Ich würds so machen (Sorry für das "Quick&Dirty"
):
MySQL Tabelle:
- id
- ip
- host
- date
Funktionen:
- check()
- update()
- delete()
- insert()
Variablen:
- $ip = $_SERVER['REMOTE_ADDR'];
- $host = getHostByAddr($ip);
- $ban_time = 900; // 15 Minuten
"check()" holt sich 'date':
SELECT date FROM $tabelle WHERE ip=$ip AND host=$host
Anschließend berechnest du ob
time()-$_banzeit größer ist als 'date' aus der Tabelle.
Wenn eine gültige IP besteht wird true zurückgegeben, andernfalls false.
"update()" rufst du nach einer Aktion auf, um das Feld 'date' auf den neuen Stand zu bringen:
UPDATE $tabelle SET time=time() WHERE ip=$ip AND host=$host
"delete()" löscht alle Beiträge wo 'date' kleiner ist als time()-$delete_time:
DELETE FROM $tabelle WHERE date<time()-$ban_time
"insert()" trägt neue ip ein:
INSERT INTO $tabelle (ip, host, date) VALUES ($ip, $host, time())
So könnte dein Script zB aussehen
CODE
<?php
// Bereich Sperren
if(check() == true) echo 'IP gesperrt.'; // IP vorhanden, Bereich also gesperrt.
else {
// weiter gehts
}
?>
<?php
// Nach einer Aktion
if(check() == true) update();
else insert();
?>
Hoffe, ich hab keine Fehler gemacht - bin seit 2 Tagen wach
Bei Fragen, fragen!
Gruß
carapau