Tutorials
Autor
Flitze
Klicks 6571
Bewertungen 102
Rating 8.1
Stand 29.05.2009
Keywords
PHP Rating System, Bewertung Tutorial, Rating Tutorial, PHP Bewertungssystem, Inhalte bewerten, Rating erstellen, Rangfolge erstellen, Inhalte bewerten
Social Bookmarking:
Klicks 6571
Bewertungen 102
Rating 8.1
Stand 29.05.2009
Keywords
PHP Rating System, Bewertung Tutorial, Rating Tutorial, PHP Bewertungssystem, Inhalte bewerten, Rating erstellen, Rangfolge erstellen, Inhalte bewerten
Social Bookmarking:
PHP Ratingsystem
Seite : 1 2 3 4 5 6 7 BewertenSchutz vor Mehrfachbewertung
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 Bewerten

