Avatar billede xsix Nybegynder
31. januar 2008 - 16:41 Der 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?

På forhånd tak.
Mvh. XsiX
Avatar billede storkie Nybegynder
31. januar 2008 - 16:47 #1
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
Avatar billede Slater Ekspert
31. januar 2008 - 17:22 #2
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.
Avatar billede xsix Nybegynder
31. januar 2008 - 17:33 #3
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.

Men bare smid et svar viperine :)
Avatar billede Slater Ekspert
31. januar 2008 - 17:42 #4
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 :)
Avatar billede xsix Nybegynder
05. februar 2008 - 14:44 #5
Undskyld jeg først skriver så sent, men hvordan bruger jeg den der "ip2long()" funktion?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester