Hallo,
Ik heb een scriptje zodat iemand een cijfer kan geven
voor een foto, nu mogen alleen geregistreerde gebruikers een cijfer van 1 tot 10 geven,
en ik heb deze beveiliging erin:
En toch vinden ze een mogelijkheid om dubbel te stemmen.
Hoe kan dit nu, en is het nog beter te beveiligen?
Ik heb een scriptje zodat iemand een cijfer kan geven
voor een foto, nu mogen alleen geregistreerde gebruikers een cijfer van 1 tot 10 geven,
en ik heb deze beveiliging erin:
PHP:
1
| <? include ("$adminpath/config.php"); // Fix for lamers that like to cheat on polls $ip = getenv("REMOTE_ADDR"); $past = time()-1800; mysql_query("DELETE FROM $prefix"._gallery_rate_check." WHERE time < $past"); $result = mysql_query("SELECT ip, pid FROM $prefix"._gallery_rate_check." WHERE pid=$pid"); list($ips, $pids) = mysql_fetch_row($result); $ctime = time(); if (($ip == $ips) && ($pid == $pids)) { $voteValid = 0; } else { mysql_query("INSERT INTO $prefix"._gallery_rate_check." (ip, time, pid) VALUES ('$ip', '$ctime', '$pid')"); $voteValid = 1; } // Fix end if($setRateCookies>0) { // we have to check for cookies, so get timestamp of this rate list($time) = mysql_fetch_row(mysql_query("SELECT date FROM $prefix"._gallery_pictures." WHERE pid=$pid")); $timeStamp = formatTimestamp($time); $cookieName = $cookiePrefix.$timeStamp; // check if cookie exists if($HTTP_COOKIE_VARS["$cookieName"] == "1") { // cookie exists, invalidate this vote echo $warn = "You already voted today!"; $voteValid = 0; } else { // cookie does not exist yet, set one now $cvalue = 1; setcookie("$cookieName",$cvalue,time()+86400); } } // update database if the vote is valid if($voteValid>0) { mysql_query("update $prefix"._gallery_pictures." set votes=votes+1, rate=(rate*(votes-1) + $rate)/votes where pid=$pid"); } // a lot of browsers can't handle it if there's an empty page print '<html><head></head><body></body></html>';}?> |
En toch vinden ze een mogelijkheid om dubbel te stemmen.
Hoe kan dit nu, en is het nog beter te beveiligen?