31. januar 2008 - 16:41Der er
4 kommentarer og 1 løsning
Et klik per IP
Hej Eksperter.
Jeg prøver at lave en side som alle kan klikke ind på, men den skal kun gøre noget bestemt 1 gang om dagen per IP, sådan så at hvis man prøver at trykke derind 2 gange fra samme IP, kommer den frem og siger at man allerede har trykket 1 indenfor de sidste 24 timer.
Er lidt i tvivl om hvordan jeg gør dette, men kunne forestille mig at når man klikker ind, lagere den ens IP i databasen sammen med et tidspunkt, og så hver gang man trykker ind, går den ind og tjekker dette tidspunkt for at se om de 24 timer er gået, og hvis det så er gået, sletter den IP adressen igen, eller kan det bedre betale sig at bruge et cronjob?
Problemet med IP-adresse er jo, at der ofte er flere computere tilsluttet samme computer. Du kunne eventuelt gemme en cookie, som er tidsindstillet til 24 timer. Se eventuelt: http://dk.php.net/manual/en/function.setcookie.php
Men problemet med cookies er at de er så nemme at slette for brugeren. Så hvis det er vigtigere at folk kun kan gøre tingen én gang per dag, end at ALLE kan få lov at gøre tingen, så vil man gøre det det cirka som du beskrev, xsix. Du behøver sådan set ikke engang slette den fra databasen igen, da de fleste databaser sagtens kan håndtere millioner af rækker uden problemer, og det intet fylder når det kun er tal. Bare kør en "select * from tabel where ip=$ip and time>$tid_i_gaar" - og hvis der er > 0 rækker, så må brugeren ikke gøre det igen.
Hmm ja er ikke meget for cookies fordi, netop som viperine siger, de kan slettes af brugeren selv. Tror jeg vil gøre som viperine siger, var bare lidt i tvivl om hvor meget databasen kunne klare, hvis man skulle køre et opkald til den hver gang en bruger trykke ind på siden, uden at siden så begynder at køre langsomt når der kommer mange eller så noget.
Hvis du er bekymret for farten kan du evt. slette databasen manuelt en gang om måneden eller lignende. Men du skal som sagt op i millioner af rækker før du vil mærke en ydelsesforværring.
Husk dog altid at bruge ip2long() funktionen i PHP, før du putter en IP ind i databasen. Bare Det laver det om til et tal, som databasen håndterer meget bedre, og formindsker størrelsen kraftigt. Bare en sidebemærkning :)
Undskyld jeg først skriver så sent, men hvordan bruger jeg den der "ip2long()" funktion?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.