Hej!
Försöker göra ett script som kollar om en person röstat innan, och om så är fallet så får han/hon inte göra det igen förrän 60 sekunder har gått. (För att undvika "flooding".
mySQL databastabellen består av fälten: id(int), ip(varchar), lastvote(int)
Som det är nu, så åker nya rader in i databasen hela tiden, så kollen fungerar inte. (varje ip nummer ska förekomma högst en gång)
Får inte ordnning på det riktigt, här är några frågor, där jag tror felet ligger.
if(mysql_affected_rows!=0){
Är detta tokigt för att kolla om det blivit någon träff med SELECT satsen?
if(($timenow-$row['lastvote'])<60){
Fungerar detta för att kolla om mer än 60 sekunder gått? (Värdena är ju i "unix" tid, dvs ett int värde, så det borde väl gå?)
Hela koden
$ip=$_SERVER['REMOTE_ADDR'];
$timenow=time();
Databaskoppling
$Query = "SELECT * FROM songvotecheck WHERE ip='$ip'" or die (mysql_error());
$Result = mysql_query($Query) or die("Error: ".mysql_error()." in query: ".$Query);
$row=mysql_fetch_array($Result);
if(mysql_affected_rows!=0){
//Träff på ip-numret i databasen
if(($timenow-$row['lastvote'])<60){
//Det har inte gått 60 sekunder sedan sist detta ip försökte rösta
echo "You have already voted, you have to wait a while until you vote again";
}else{
//Det har gått mer än 60 sekunder, ip-numret får rösta
$Query = "UPDATE songvotecheck SET lastvote='$timenow' WHERE ip='$ip'" or die (mysql_error());
mysql_db_query ("modernidiot", $Query, $Link) or die (mysql_error());
$vote=1;
}
}
elseif(mysql_affected_rows==0){
//Ingen träff på ip numret i databasen, ip-numret får rösta
$Query = "INSERT INTO songvotecheck(ip, lastvote) values('$ip', '$timenow')" or die (mysql_error());
mysql_db_query ("xxxx", $Query, $Link) or die (mysql_error());
$vote=1;
}
mysql_close($Link);
if($vote==1){
Här sker röstningen, den koden funkar bra.
}
$vote=0;