Formulier maar 1 maal per dag laten invullen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maes Timmy

Maes Timmy

01/06/2008 12:03:00
Quote Anchor link
Hey,

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 hulp

PHP hulp

07/05/2024 07:48:05
 
Joris van Rijn

Joris van Rijn

01/06/2008 12:26:00
Quote Anchor link
met setcookie()

php.net/setcookie
 
Maes Timmy

Maes Timmy

01/06/2008 13:30:00
Quote Anchor link
MLja heb al wat gevonden hoor :)

Bovenaan in mijn header zet ik:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$Day
= 86400 + time();
//this adds 1 day to the current time 24h x 60min x 60sec
setcookie(JumpstyleAwards, date("F jS - g:i a"), $Day);
?>


en dan verder op de pagina in de body:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(isset($_COOKIE['JumpstyleAwards']))
{

$last = $_COOKIE['JumpstyleAwards'];
echo "Welcome back! <br> You last visited on " . $last;
echo "This means you still need to wait a while longer to vote again, you can only vote once every day!";
}

else
{
echo "Welcome!";
}

?>



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
 
Jan Aart

Jan Aart

01/06/2008 13:30:00
Quote Anchor link
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.
 
Jan Aart

Jan Aart

01/06/2008 13:32:00
Quote Anchor link
bool setcookie ( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]] )

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).
 
Jurgen assaasas

Jurgen assaasas

01/06/2008 14:01:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.