Je voudrais réaliser un petit exercice en vue d'une application plus importante de suivi d'activité.
Énoncé du problème :
Soit une page Web avec un bouton "Cliquer ici" (jusque là, ça va !)
L'utilisateur doit cliquer tous les jours sur ce bouton.
S'il ne le fait pas pendant, mettons, 5 jours de suite, un mail de rappel lui est envoyé, et le compteur de "jours non cliqués" repart à zéro.
Cela suppose donc un script quotidien genre "cron" tournant sur le serveur et qui :
- incrémente un compteur de 1 chaque jour
- teste si ce compteur est supérieur à 4, alors il envoie le mail et remet le compteur à 0
Un genre comme ça :
Ça, ça fonctionne :-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php $monfichier = fopen('compteur.txt', 'r+'); // On ouvre le fichier $nbr = fgets($monfichier); // On lit la première ligne (compteur) $nbr += 1; // On augmente de 1 ce compteur fseek($monfichier, 0); // On remet le curseur au début du fichier fputs($monfichier, $nbr); // On écrit le nouveau compteur // Si le compteur est >4 on envoie un mail if ($nbr>4) { ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); $from = "test@domaine.ovh"; $to = "destinataire@mail.com"; $subject = "Vérification PHP mail"; $message = "ALERTE *** Vous n'avez pas cliqué depuis 5 jours."; $headers = "From:" . $from; mail($to,$subject,$message, $headers); echo "Le mail a été envoyé."; $nbr = 0; // On remet le compteur à 0 fseek($monfichier, 0); // On remet le curseur au début du fichier fputs($monfichier, $nbr); // On écrit le nouveau compteur } // Quand on a fini de l'utiliser, on ferme le fichier fclose($monfichier); echo '<p>Compteur actuel : ' . $nbr . ' </p>'; ?>
Il me manque donc juste un processus qui remet le compteur à 0 lorsque l'utilisateur clique sur le bouton de la page Web, et là je n'y arrive pas, j'ai essayé en PHP mais impossible puisque exécuté sur le serveur, Javascript pareil, impossible d'affecter une fonction JS à un bouton HTML, ou je ne sais pas faire.
Merci d'avance pour vos idées et suggestions.
Jack.
Partager