Ich habe, bzw. bin jetzt dabei mein Bildervoting zu erstellen.
Das Klappt auf Cookie-Basis auch schon ganz gut, da ich mich diesem Script bedient habe (
http://www.phpkobo.com/ajax_likes.php).
Mit diesem Code generiere ich jedes Bild
Code: Alles auswählen
// Manipulation/Ausgabe für die Webseite
echo '<div class="ld-container" tid="'.$imgname.'" action="voting/ajax_likes.php">';
echo '<a href="'.$img2 .'"><img src="$imgb .'" width="'. $imgcropwidth .'" height="'. $imgcropheight .'" /></a>';
echo '<button type="button" class="ld-btn-like" title="I like it"><img class="ld-img-like" src="images/thumbs-up-ss.png"></button> <span class="ld-stats-txt"></span>';
echo '</div>';
Nun möchte ich das aber um eine IP-Sperre erweitern, wobei nicht die seite gesperrt werden soll, sondern für 24h das Bild (man kann also mehre Bilder voten, aber ein und das selbe Bild nur einmal).
Also benötige ich eine SQL-Tabelle wo die Ip gespeichert wird, den Timestamp und die Bild-ID.
bei mir ist die Bild-Id = der Bildname ohne Dateiendung.
Das ist meine MySQL-Tabelle:
Code: Alles auswählen
CREATE TABLE `con_imagevoting` (
`ip` varchar(20) NOT NULL default '',
`time` int(15) NOT NULL default '0',
`imagenameid` varchar(30) NOT NULL default ''
) TYPE=MyISAM;
Aber jetzt weiß ich gar nicht weiter!
A. Wie ich die daten in die Tabelle bekomme
B. Wie ich Ip und Img-Id abfrage und vergleiche
C. was überhaupt passieren soll, wenn Ip und Bild-Ip bereits in der Tabelle sind -> wahrscheinlich den Vote-Button am besten ausblenden!
Könnte mir jemand mit einem Code-Schnipsel einen kleinen oder großen Anstoss geben.
Nachtrag:
Diese beiden Funktionen (gefunden hier:
http://tutorials.designnation.de/worksh ... re-Version) helfen mir die Ip zu speichern und abzufragen.
Code: Alles auswählen
<?php
function check_ip ($ip,$sek,$type,$die) {
if($ip && $sek && $type) { // Nur fortsetzen wenn alle benötigten Parameter angegeben sind
$ips = array(); // Ein leeres Array erstellen
$sql = "SELECT ip FROM con_imagevoting WHERE time > '".( time() - $sek )."' AND imagenameid = '".$type."'"; // Die SQL Abfrage
$result = mysql_query($sql); // SQL Abfrage in Array Packen
while($row = mysql_fetch_assoc($result)) { // Einzeln "Bearbeiten"
array_push($ips,trim($row['ip'])); // Jede IP in das vohon erstellte Array einfügen
}
if(in_array($ip,$ips)) { // Wenn IP Gesperrt
if($die && $die != false) { // Falls der Parameter $die gesetzt ist und er nich false ist
die("<b>Deine IP (".$ip.") ist gesperrt!</b>"); // Beendet das Script
} else { // Fals nicht
return true; // Gib true aus (für eine IF abfrage)
}
} else { // IP Nicht Gesperrt
return false; // Gib false aus (für eine IF abfrage)
}
} else { // Nicht alle benötigten Parameter vorhanden
return false; // Gib false aus (für eine IF abfrage)
}
}
function add_ip ($ip,$type) {
if($ip && $type) { // Nur fortsetzen wenn alle Parameter angegeben sind
// $insert = mysql_query("INSERT INTO con_imagevoting ( ip , time , imagenameid ) VALUES ( '".$ip."' , '".time()."' , '".substr($type,0,10)."' )");
$insert = mysql_query("INSERT INTO con_imagevoting ( ip , time , imagenameid ) VALUES ( '".$ip."' , '".time()."' , '".$type."' )");
if($insert) { // Wenn erfolgreich eingefügt wurde
return true; // Gib true aus (für eine IF abfrage)
} else {
return false; // Gib false aus (für eine IF abfrage)
}
} else {
return false; // Gib false aus (für eine IF abfrage)
}
}
?>
Hier eine Beispielabfrage:
Code: Alles auswählen
if(check_ip($_SERVER['REMOTE_ADDR'],"3600","$imgname",false)) {
echo "Deine IP Ist gesperrt";
//oder andere Befehle
} else {
echo "Du darfst hier verweilen";
//oder andere Befehle
}
Klappt auch wunderbar, jetzt weiß ich aber nicht, wie ich die IP nur speichere wenn ich auf den Button klicke! Denn mit
speichert er mir das für alle Bilder automatisch, ohne auf einen Button zu klicken! Und vor allem speichert er all Bilder und alle IPs. Ich will aber, dass er immer nur pro Klick auf ein Bild und die IP, Imagname, und Zeit abspeichert und nicht gernerell für alle 45 bilder.
Code: Alles auswählen
echo '<form class="ld-container" tid="'.$imgname.'" action="voting/ajax_likes.php" method="post">';
echo '<a href="'.$img2 .'"><img src="'. $imgb .'" /></a>';
echo '<button type="button" class="ld-btn-like" title="I like it" name="'.$imgname.'"><img class="ld-img-like" src="images/thumbs-up-ss.png"></button> <span class="ld-stats-txt"></span>';
add_ip($_SERVER['REMOTE_ADDR'],"$imgname");
clear_ip();
echo '</form>';
$z++;
Hat noch jemand dafür eine Lösung?!
Vielen Dank
MfG Steffen