Spam-Protection-Error

dermacz

Erfahrenes Mitglied
Hallo,
habe mir mal eine Shoutbox gecodet:

PHP:
<?
@mysql_connect("localhost", "root", "") OR die(mysql_error());    
mysql_select_db('sb') OR die(mysql_error());

if($_POST['send']) {
$name = $_POST['Name'];
$post = $_POST['Text'];
$ip = getenv("REMOTE_ADDR");
$time = time();
$sql = "SELECT Zeit FROM sb_spam WHERE IP='".$ip."';";
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {  //IP in Table->checken
while($row = mysql_fetch_assoc($result)) $time_db = $row['Zeit'];
if($time_db >= time()-180) {   //checken ob älter als 3 min-> eintragen!
$sql = "INSERT INTO
                            sb_post(Name,Post)
                        VALUES
                            ('".$name."','".$post."');";
	
$sql1 = "UPDATE
				sb_spam
		 SET
		 		IP = '".$ip."',
				Zeit = '".time()."'	
		 WHERE
		 		IP = '".$ip."';";		
                       
							
mysql_query($sql) OR die(mysql_error());
mysql_query($sql1) OR die(mysql_error());
echo "Danke für deinen Eintrag<br><a href=\"shout.php\">Zurück</a>";							

}
else { //wenn neuer dann fehler!
die("Spam-Protection:3 Minuten warten!<br><a href=\"shout.php\">Zurück</a>");
}
}
else {  // betreffende IP nicht in Table -> eintragen!
$sql = "INSERT INTO
                            sb_post(Name,Post)
                        VALUES
                            ('".$name."','".$post."');";
	
$sql1 = "INSERT INTO
                            sb_spam(IP)
                        VALUES
                            ('".$ip."');";
							
mysql_query($sql) OR die(mysql_error());
mysql_query($sql1) OR die(mysql_error());
echo "Danke für deinen Eintrag<br><a href=\"shout.php\">Zurück</a>";							
}							
}
else {
echo"<table>";

			$sql = "SELECT 
			                ID,
							Name,
							Post
				    FROM 
							sb_post;";
							
			$result = mysql_query($sql) OR die(mysql_error());
			if(mysql_num_rows($result)) {
			while($row = mysql_fetch_assoc($result)) {
			$zahl = $row['ID'];
			echo "<tr><td";
			if(round($zahl/2) - floor($zahl/2) < 1)  {
			echo" bgcolor=\"#000000\"><font color=\"#FFFFFF\"><b>".$row['Name']."</b>:".$row['Post']."</font></td></tr>";   
			}
			else  {
			echo" bgcolor=\"#FFFFFF\"><font color=\"#000000\"<b>".$row['Name']."</b>:".$row['Post']."</font></td></tr>";
			}
			}
			}
			else {
			echo "<td>Noch keine Shouts</td>";
			}


echo"<tr>
	
			 
	
	
	
</tr>
<tr>
	<td align=\"center\">
	
		<form action=\"shout.php\" method=\"post\">
		<input type=\"text\" maxlength=\"25\" name=\"Name\" onfocus='this.value=\"\"' value=\"name\"><br><br>
		<textarea name=\"Text\" onfocus='this.value=\"\"' rows=\"5\" cols=\"25\">shout</textarea><br><br>
		<input type=\"submit\" name=\"send\" value=\"shout\">&nbsp;<input type=\"reset\" value=\"reset\">
		</form>
	
	</td>
</tr>
</table>";

}
?>

Hier klappt alles perfekt nur das wenn die IP ersteinmal in der Tabelle ist (nach 1sten Post) Kommt immer die Spam-Protection, sprich der Fehler muss in diesem Vergleich stehen:

PHP:
if($time_db >= time()-180) {   //checken ob älter als 3 min-> eintragen!

Wie gesagt es sollen 3 Min sein stimmt das dann?
PS: In der Tabelle sb_post liegen die Felder ID, Name, Post (selbsterklärend) und in sb_spam gibt es IP (aktuelle IP) und Zeit(timestamp() )
 
Zuletzt bearbeitet:
Nabend,
tut mir leid, aber ich kann da auf den ersten Blick keinen Fehler entdecken, aber meine augen sind auch schon fast zu ;)

Ich würde dir trotzdem ans Herz legen deinen Code zu strukturieren, dann wird das ganze doch gleich viel lesbarer und auch Fehler lassen sich schneller entdecken.

Hast du schonmal mit phpmyadmin in die Tabelle geschaut ob da auch alles richtig eingetragen ist(mit der Zeit).

Mathias

p.s. schonmal das versucht?
PHP:
$jetzt = time();
if($time_db >= $jetzt-180) {  
...}else echo $jetzt;
 
Zuletzt bearbeitet:
Zurück