PHP Ratingsystem - Vor Mehrfachbewertungen schützen
Autor
Flitze
Klicks 83303
Keywords:
PHP Rating System, PHP Ranking System Tutorial, PHP Rating Tutorial, PHP Bewertungssystem, PHP Ranking erstellen, Rating System Tutorial, PHP Ranking System, Mehrfachbewertungen schützen, Schutz, viele Bewertungen, Witze Bewertung, Bewertungssystem
Klicks 83303
Rating für PHP Ratingsystem
7.7 von 10
Bewertungen417
Stand
20.06.2010
7.7 von 10
Bewertungen417
Keywords:
PHP Rating System, PHP Ranking System Tutorial, PHP Rating Tutorial, PHP Bewertungssystem, PHP Ranking erstellen, Rating System Tutorial, PHP Ranking System, Mehrfachbewertungen schützen, Schutz, viele Bewertungen, Witze Bewertung, Bewertungssystem
Breadcrumb:
Tutorials » PHP Ratingsystem » PHP Ratingsystem - Vor Mehrfachbewertungen schützen
Schutz vor Mehrfachbewertung
[ADSENSE_LINE]Um einer Manipulation durch mehrfache Bewertung durch denselben Benutzer vorzubeugen, bauen wir nun noch einen Spamschutz in die Datei rate_witz.php ein. Dieser speichert die IP des Users und den Witz, den er bewertet hat in der zu Beginn erstellen Datenbanktabelle IP_Locks. Will der User nun den gleichen Witz erneut bewerten, wir eine Abfrage dieser Datenbanktabelle eine Ergebniszeile liefern und wir können die Bewertung blockieren. Da eine IP normalerweise nicht dauerhaft einen User zugeordnet ist und wir die Datenbanktabelle nicht unnötig zumüllen wollen, wird außerdem noch das Datum der Bewertung gespeichert. Dadurch kann der Eintrag nach einer gewissen Zeitspanne (z.B. 24 Stunden) gelöscht werden. Die rate_witze.php wird nun folgendermaßen erweitert:
PHP:
<?php
// Prüfen, ob ID und Punktzahl übergeben wurden
$rate = isset($_POST['Bewertung'])?(int)$_POST['Bewertung']:0;
$id = isset($_POST['ID'])?(int)$_POST['ID']:0;
// IPs löschen, die älter als 24 Stunden sind
$sql = "DELETE FROM
IP_Locks
WHERE
DATE_SUB(NOW(), INTERVAL 1 DAY) > Datum
";
mysql_query($sql) OR die(mysql_error()."<pre>".$sql."</pre>");
// Prüfen, ob User-IP und Witz-ID in IP_Locks gespeichert sind
$sql = "SELECT
COUNT(*)
FROM
IP_Locks
WHERE
IP = '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."' AND
ID = '".mysql_real_escape_string($id)."'
";
$result = mysql_query($sql) OR die(mysql_error()."<pre>".$sql."</pre>");
$ip_locked = mysql_result($result, 0);
// Prüfen, ob die ID gültig ist
$sql ="SELECT
COUNT(*)
FROM
Witze
WHERE
ID = '".mysql_real_escape_string($id)."'
";
$result = mysql_query($sql) OR die(mysql_error()."<pre>".$sql."</pre>");
$id_valid = mysql_result($result,0);
// IP noch gesperrt?
if($ip_locked)
echo "<p>Sie haben diesen Witz bereits bewertet.</p>";
// ID valide?
elseif(!$id_valid)
echo "<p>Die gewählte Witz-ID ist ungültig.</p>";
// Prüfen, ob die Punktzahl im erlaubten Bereich liegt
elseif($rate<1 OR $rate>5)
echo "<p>Sie können nicht weniger als 1 oder mehr als 5 Punkte vergeben.</p>";
else{
// Update Rating
$sql = "UPDATE
Witze
SET
Rating_Summe = Rating_Summe+".$rate.",
Rating_Anzahl = Rating_Anzahl+1
WHERE
ID = '".mysql_real_escape_string($id)."'
";
mysql_query($sql) OR die(mysql_error()."<pre>".$sql."</pre>");
// IP für diesen Witz sperren
$sql = "INSERT INTO
IP_Locks
SET
IP = '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
ID = '".mysql_real_escape_string($id)."',
Datum = NOW()
";
mysql_query($sql) OR die(mysql_error()."<pre>".$sql."</pre>");
echo "<p>Sie haben den Witz erfolgreich mit ".$rate." Punkten bewertet.</p>";
}
echo "<p>Zurück zur <a href=\"show_witze.php\">Witzeanzeige</a></p>";
?>
Die aktuelle IP-Adresse eines Users findet sich in der Variable $_SERVER['REMOTE_ADDR'], diese wird bei der erfolgreichen Bewertung in IP_Locks gespeichert.
Zurück zur vorigen Seite:
PHP Ratingsystem - Beispiel: Witze Ratingsystem Bewertung Speichern Bewerten