Autoriser le clique seulement toute les 24h

Edwyn29 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis débutant en php et je suis en train de créer un petit site rémunérateur.

Les membres auront un système de "point" appelé "Win's".

J'ai développé un petit module où le membres clique sur un bouton et ça lui génère une valeur entre 100 et 5000 Win's avec
mt_rand(100, 5000)


J'ai utilisé :

<form method="POST" action="">
   <input type="submit" name="generer" value="Ouvrir la grille">
</form>


<?php
$id = $_SESSION['id'];

if (isset($_POST['generer'])) {

$req_wins = $bdd->prepare("SELECT wins, historique_wins FROM membres WHERE id='$id'");
$req_wins->execute(array());
$resultat_wins = $req_wins->fetch();

 $aleatoire = mt_rand(100, 5000);
 $aleatoire2 = number_format($aleatoire, 0, '.', ' ');
 $ajout = $resultat_wins['wins'] + $aleatoire;

$req_ajout = $bdd->prepare("UPDATE membres SET wins = '$ajout', historique_wins = '$ajout' WHERE id='$id'");
$req_ajout->execute(array());
$resultat_ajout = $req_ajout->fetch();

 echo "<p>Vous avez gagné <b>".$aleatoire2." Win's</b> aujourd'hui !</p>";

$req_wins->closeCursor();
$req_ajout->closeCursor();
 }
?>


J'ai donc 2 questions :

- Comment puis-je faire pour que le membre puisse cliquer seulement 1 fois par jour ? Ou tout simplement afficher "Vous avez déjà cliqué, revenez demain" lorsqu'il re-cliquera ? (J'aimerais le faire en sélectionnant la session plutôt que sélectionner l'ip, j'espère que c'est possible ^^)

- Avec UPDATE (ou autre), comment puis-je faire pour additionner la valeur généré avec
mt_rand(100, 5000)
? Car pour l'instant, il change carrément la valeur dans la base de donnée par celle généré.

1 réponse

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Si c'est une journée, une session ne sera pas suffisante.
Tu peux par exemple :
  • Demander la création d'un compte et dans les propriétés de ce compte, la date du dernier clic.
  • Mettre un cookie (24h de vie) qui marque de quand date le dernier clic.

0
Edwyn29 Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   1
 
Il n'es vraiment pas possible de faire ça avec les sessions ?

Si mon php ressemble à ça :

"Si le membre avec l'id xxxx à cliqué, mettre un délai de 24h avant qu'il puisse de nouveaux cliqué"
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Une session périme au bout de 30 minutes environ (Si pas de refresh de pages du site, dépendant la configuration du serveur), donc ce n'est pas une solution pour le stockage sur 24 heures.
0