Formulier maar 1 maal per dag laten invullen
Ik weet dat ik het met cookies zal moeten doen, maar kweet niet goed hoe vandaar mijn vraag.
Ik heb een formulier met een soort van stem-vragen die men moet oplossen, werkt allemaal al perfect, maar ik wil dat bezoekers die maar 1 maal per dag (dus om de 24 uur) kunnen invullen.
Hoe kan ik dit doen?
Ik zou wel al een popupberichtje willen tonen voordat ze alles nogmaals nutteloos invullen en als ze op Verzenden duwen, dat er dan pas zou op komen dat ze maar 1 maal per dag kunnen stemmen ...
Hoe doe ik dit? Ik zou een popupje willen waarop komt:
Sorry, you already voted today, you need to wait xx hours to vote again!
Hopelijk kan iemand me hiermee helpen :)
PS: Ik weet ook dat ze door hun cookies te verwijderen opnieuw kunnen stemmen, maar dat is niet zo erg, niet iedereen weet dat dit kan dusja.
php.net/setcookie
Bovenaan in mijn header zet ik:
Code (php)
en dan verder op de pagina in de body:
Code (php)
MAAR wat ik ook wil hebben is het volgende: (en hiervoor zal ik nog een nieuwe cookie moeten instellen maar kweet niet hoe)
Als men op VOTE NOW klikt, dan zou er moeten een cookie worden gezet worden die na 1 dag verloopt ...
Ook moet er als men op VOTE NOW klikt gecontroleerd worden als ze al gestemd hebben de laatste 24 uur ... zoja, dan moet er een popupje of een berichtje op de pagina zelf komen met:
You need to wait a while longer to vote again, you can only vote once every day!
Reeds dank
Is het niet slim om de ip's in de database op te slaan samen met een NOW()? En dat je dan bij het laden van de poll checkt of het ip in de database voorkomt binnen een bepaald interval? (in jouw geval 24u) Hiermee heb je namelijk niet het probleem van coockies die te verwijderen zijn. Natuurlijk heb je wel het probleem dat je van een proxyserver gebruik zou kunnen maken. En dan zou je om het helemaal veilig te maken het nog een keer moeten checken bij het invoeren van de poll.
expire
The time the cookie expires. This is a Unix timestamp so is in number of seconds since the epoch. In other words, you'll most likely set this with the time() function plus the number of seconds before you want it to expire. Or you might use mktime(). time()+60*60*24*30 will set the cookie to expire in 30 days. If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).
Je kunt het beste in de database een primary key over het IP, id en datum (YYYY-MM-DD) zetten. Dan is het al onmogelijk om 2x per dag te stemmen. en dan kun je door de query uit te voeren die gaat mislukken een melding geven dat degene al heeft gestemd.