webForumDet fria alternativet

IP Spärr i röstscript

2 svar · 243 visningar · startad av F_I_C

F_I_CMedlem sedan jan. 200293 inlägg
#1

Vet inte riktigt om det är rätt forum kanske skulle vara under PHP och isf ber jag admin flytta tråden.

Har programerat ett relativt enkelt röstscript, men det fungerar iaf. Har hållt på ett tag att försöka ordna in en IP spärr så att det endast är möjligt att rösta 1 gång från samma IP.
Har till detta skapat en tabell enligt följande

| ID (int) | IP (varchar) | DATUM(datetime) |

Nu är frågan hur jag löser det lättast med SQL satser etc. Kör en vanlig INSERT när personen röstat.

Därefter har jag testat med att plocka ut infon ur databasen och kört några while-loopar i PHP för att kolla upp statusen. Förmodar att detta skulle kunna fungera (har inte lyckats än) men att det inte är den bästa lösningen.

Kan jag sätta in något i databasen och ställa tid när det ska raderas ? Kan jag skicka besökarens IP till databasen och be den kolla upp om den finns där, och isf returnera false/true eller liknande ?

Om inte det går att sätta tid på när databasen ska tömas, kan jag skriva en mysql sats som tömmer allt som är äldre än tex. 168h ?

Om jag är helt ute i det blå, kom gärna med en alternativ lösning ;)

aasahMedlem sedan mars 20034 471 inlägg
#2

Förutsätter MySQL.

//En gång röstat från visst ip, aldrig mer:
function OKtoVote($ip) {
   $sql = "SELECT * FROM VoteTab WHERE IP = '$ip'";
   $res = mysql_query($sql) or die("fel");
   return (mysql_num_rows($res) === 0);
}

$ip = $_SERVER['REMOTE_ADDR'];

if (OKtoVote($ip))
  //rösta på

//EJ OK att rösta om mindre än x dagar gått. (x = något heltal)
function tooRecentRes($ip) {
   $sql = "SELECT * FROM VoteTab
             WHERE IP = '$ip' AND
             Datum > DATE_SUB( CURDATE( ) , INTERVAL x DAY )";
   $res = mysql_query($sql) or die("fel recent");
   return (mysql_num_rows($res) > 0);
}

if (!tooRecentRes($ip))
  //Rösta på...
F_I_CMedlem sedan jan. 200293 inlägg
#3

Ursäkta att jag inte återkommit, men har inte haft tid att testa förrens nu. Fungerade kanon!
Stort tack!

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)