Reload Sperre Funktioniert nicht

funnyzocker

Erfahrenes Mitglied
*EDIT Habe den Fehler schon gefunden.


Hallo.
Ich habe das Tutorial Counter mit Reloadsperre ein wenig geändert um es für mein Projekt nutzen zu können.

Es ist so das User bewertungen für eine Webseite abgeben können. Da aber viele Webseiten eingetragen sind wollte ich es so haben das nur 1 Bewertung pro Stunde pro webseite möglich ist.
Daher habe ich die IP noch mit der Anbieter ID kombiniert.

PHP:
$ip = $_SERVER["REMOTE_ADDR"];
$sql = mysql_query("select * from reload where ip='$ip' AND anb_id='$_GET[id]'");
if(mysql_num_rows($sql) < 1) {
    $zeit = time();
    mysql_query("insert into reload (ip, stamp, anb_id) values ('$ip', '$zeit', '$_GET[id]')");
    $eintrag = "INSERT INTO punkte (anb_id, punkte) VALUES ('$_GET[id]', '$_GET[sterne]')";
$do = mysql_query($eintrag);
echo"<h2><center>Vielen Dank für deine Bewertung<br>
                 <a href=index.php?do=paid4_detail&art=layer&id=$_GET[id]>Zurück zum Anbieter</a></center>";
}
else
{
echo"Du hast bereits abgestimmt";
$del = $zeit - 20; 
mysql_query("delete from reload where stamp < $del and anb_id = $_GET[id]");
}
Habe die Delzeit mal auf 20 Sekunden geändert um zu sehen ob es funktioniert.
1 mal kann ich eine bewertung abgeben und dann komm selbst nach 1 Stunde noch das bereits abgestimmt wurde.
 
Zuletzt bearbeitet:
Ich würde mal versuchen die Querys sauberer zu schreiben.

mysql_query("insert into reload (`ip`, `stamp`, `anb_id`) values ('".$ip."', '".$zeit."', '".$_GET[id]."')");
usw. usw. usw. und zusätzlich ein echo mysql_error() mit rein, damit Fehler auch angezeigt werden, wenn welche vorhanden sind.
 
Du solltest die Eingabwerte validieren, beispielsweise:
PHP:
$errors = array();
if( !isset($_GET['id']) || $_GET['id'] != abs((int)$_GET['id']) ) {
	$errors[] = 'Ungültiger ID-Wert!';
}
if( !isset($_GET['sterne']) || $_GET['sterne'] != (int)$_GET['sterne'] || $_GET['sterne'] < 1 || $_GET['sterne'] > 5 ) {
	$errors[] = 'Ungültiger Sterne-Wert!';
}

if( empty($errors) ) {
	$result = mysql_query("SELECT * FROM reload WHERE ip='".$_SERVER['REMOTE_ADDR']."' AND anb_id='".$_GET['id']."'");
	if( mysql_num_rows($result) < 1 ) {
		mysql_query("INSERT INTO reload (ip, stamp, anb_id) VALUES ('".$_SERVER['REMOTE_ADDR']."', NOW(), ".$_GET['id'].")");
		mysql_query("INSERT INTO punkte (anb_id, punkte) VALUES (".$_GET['id'].", ".$_GET['sterne'].")");
		echo"<h2><center>Vielen Dank für deine Bewertung<br>
                 <a href=index.php?do=paid4_detail&art=layer&id=$_GET[id]>Zurück zum Anbieter</a></center>";
	} else {
		echo "Du hast bereits abgestimmt";
		mysql_query("DELETE FROM reload WHERE stamp < NOW()-20 AND anb_id = ".$_GET['id']);
	}
} else {
	print_r($errors);
}
 
Zurück