Sven: Script für IP-Sperre - Ich find den Fehler nicht

Beitrag lesen

Hallo  :-)

Ich hab ein Voting-Script geschrieben und habe Cookie-Schutz gewählt. (Man hat mehrere Optionen zur Auswahl, kann aber jede davon nur einmal bewerten).

Ich hatte mir das eingerichtet, dass die Zeit und die IP-Adresse geloggt wird und musste feststellen dass mehrmals schnell hintereinander die gleiche Option bewertet wurde. Daher möchte ich nun zusätzlich eine 24-stündige IP-Sperre einbauen.

Habe folgendes IP-Bann-Script geschrieben. Man trifft eine Auswahl, diese wird zur Kenntnis genommen und anschliessend wird die IP-Adresse mit dem Timestamp in die Datenbank eingetragen. Ist die IP bereits eingetragen, wird überprüft, ob sie schon länger als 24 Stunden drin ist... wenn Ja, wird sie wieder aus der Datenbank entfernt. Wenn nicht, bekommt der USer eine Nachricht, dass er schon gevoted hat.

Aber irgendwie funktioniert es nicht... ist der User erstmal gesperrt, bleibt er auch 24 Stunden später immernoch gesperrt. Und das sperren klappt auch nicht immer :-S

<form name="form1" method="post" action="">
  <p>Bitte Auswahl treffen:<br>
    <select name="option">
      <option>Option 1</option>
      <option>Option 2</option>
    </select>
  </p>
  <p>
    <input type="submit" name="Submit" value="Abschicken">
  </p>
</form>
<?
include("sql.php"); // Verbindung zur DB herstellen
if($option) {
$zeit_aktuell = time();
$ipadresse = $_SERVER['REMOTE_ADDR'];

$abfrage = "SELECT ip FROM ipsperre WHERE option = '$option'";
$ergebnis = mysql_query($abfrage);
$num_rows = mysql_num_rows($ergebnis);
if($num_rows == 0) {
echo "Der User ist nicht gesperrt; Bewertung vornehmen und sperren";
$eintrag = "INSERT INTO ipsperre (ip, zeit, option) VALUES ('$ipadresse', $zeit_aktuell, '$option')";
$eintragen = mysql_query($eintrag);
} else {
while ($row = mysql_fetch_array ($ergebnis))
{
if($row[ip] == $_SERVER['REMOTE_ADDR']) {

$zeit = $zeit_aktuell - $row['zeit'];
$zeitfenster = 60 * 60 * 24;
if ($zeit >= $zeitfenster) {
echo "Der User ist bereits gesperrt";
} else {
echo "Die IP-Adresse ist älter als 24 Stunden - entfernen und User abstimmen lassen";
}
}}}} else {
echo "Es wurde keine Auswahl getroffen.";
}
?>