Hi Sven,
gerade seh ich Deine Nutzung von dieser IP-Sperre. Da is jetzt einiges falsch gelaufen. Ich hab jetzt kein Bock, alles zu kommentieren und hinterher gefällt irgendeinem Simpel wieder meine Ausdrucksweise nicht. (Bin etwas müde, sorry)
Ich paste Dir hier gerade mal kurz meine IP-Sperre. Die benutze ich innerhalb eines kleinen Counter-Skripts (Auszug) für Flash.
Ich versuch´s gleich mal ein bisschen anzupassen.
<?php
Database-Data
$host = "localhost";
$database = "counter";
$user = "USER";
$passwd = "PASSWORD";
Vote-ID muss übergeben werden
Und zwar deswegen, weil ja verschiedene Vote-Skripts
simultan laufen können, oder?
if (!$counter_id) {
echo "ERROR: Die Vote-ID wurde nicht übergeben.";
die();
}
this connection will be used in the whole application
$conn = mysql_connect($host, $user, $passwd);
$db = mysql_select_db($database);
if ($option) {
## Alle IP´s löschen, die älter als 24 Stunden
$time = time();
$deltime = $time - (60*60*24);
$delstatement = "delete from votetemp where timestamp <='$deltime'";
$delexecute = mysql_query($delstatement);
## Auslesen der IP
$user_ip = "$REMOTE_ADDR";
trim($user_ip); //nicht vergessen !
## ist die IP in der Datenbank vorhanden?
$query2 = "select id from votetemp where IP = '$user_ip' AND vote_id = '$vote_id'";
$result2 = @mysql_query($query2);
$num = @mysql_num_rows($result2);
Der nächste Abschnitt ist eigentlich unnötig *g* . Aber irgendwie hatte er
Sinn, weiss auch nicht mehr so richtig. Bei irgendjemandem kam es vor,
dass 2 Einträge mit der gleichen IP waren. deswegen das doppelt gemoppelte.
if ($num >= 2) {
for ($i=1; $i < $num; $i++) {
$id_temp = mysql_result($result2, $i, 'id');
$delstatement2 = "delete from votetemp where id ='$id_temp'";
$delexecute2 = mysql_query($delstatement2);
}
}
## Falls IP vorhanden, Fehlermeldung ausgeben.
if ($num) {
echo "Hey, Hansl. Nur ein Vote innerhalb 24 Stunden.";
}
## Falls nicht, IP ins Temp-Table schreiben und vote zählen.
else {
echo "Dein Vote wurde gezählt";
$query3 = "insert into countertemp (IP,timestamp,vote_id) VALUES ('$user_ip','$time','$vote_id')";
$result3 = mysql_query($query3);
}
}
?>
und weil´s so schön ist hier noch der MySQL-Dump *g*
CREATE TABLE countertemp
(
id
int(5) NOT NULL AUTO_INCREMENT,
timestamp
int(15) default NULL,
IP
varchar(20) default NULL,
vote\_id
int(5) default NULL,
PRIMARY KEY (id
)
) TYPE=MyISAM;
Viel Spaß damit, Lars