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

Beitrag lesen

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