[PHP] Limiter un clic par jour sur un lien
Bonjour,
Je cherche à limiter un clic par jour par ip sur un lien de mon site.
Comment dois-je m'y prendre ?
Je sais que je dois faire quelque chose dans la bbd mais je sais pas quel code mettre etc ...
Voilà aidez moi :)
Je cherche à limiter un clic par jour par ip sur un lien de mon site.
Comment dois-je m'y prendre ?
Je sais que je dois faire quelque chose dans la bbd mais je sais pas quel code mettre etc ...
Voilà aidez moi :)
Configuration: Windows XP Internet Explorer 6.0
13 réponses
-
Mettre un champ dans la table des utilisateurs qui contiendra la date du clic.
Quand la personne clic vous enregistrez la date en base et vous effectuez un test pour voir si date courante différente de la date entrée.-
-
@Pilouben non y'a pas d'intérêt, c'est pas formateur...
-
-
Bah si après je serais comment m'y prendre :)
-
(T'es pas obliger de me vousvoyer lol)
En php ? Je sais faire toutes sortes de choses, la majorité de ce que je sais je l'ai apris à partir d'un code que j'avais précedement demandé à quelqu'un, mais après j'ai comblé mes lacunes avec siteduzero.... -
Contributeurau passage on risque pas de te dire quel code entrer étant donné qu'on va avoir du mal à deviner à la fois la structure de ton site et de ta base de données...
-
Tu recupes l'IP du visiteur quand il clique ( avec la variable d'envirronement $_SERVER['REMOTE_ADDR'] )
tu créés une table clic par exemple qui contient la date/heure/seconde, l'IP et le nom du lien, et a chaque clic tu fais d'abord un
ta requete = SELECT * FROM tatable WHERE ip="l'ipdu gars" && date < "24 heures"
Si ta requette = 0
// c'est a dire que la personne n'a pas cliqué aujourd'hui et donc aucune entrée correspondante
//dans ta table
{
on redirige vers le liens etc
et on fais un INSERT INTO pour enregistrer son clic
}
Sinon
{
message d'erreur du style "vous avez déja cliqué sur ce lien il y a moisn de 24h"
}
J'ai pensé ça rapidement je sais pas si c'est une bonne technique
Ca te parle ? -
->NookZ
Oui, mais je ne sais quel code rentrer pour créer un table qui récupère la date du clic, l'adresse ip etc ...
->ThEBiShOp
C'est simple vous laisser les champs inconnu vide, avec une indication qu'est ce que je dois mettre. -
Contributeurça manque toujours cruellement d'infos...
ce sont des membres ou des visiteurs anonymes qui doivent cliquer ?
faut d'abord trouver un moyen d'identifier le visiteur, si c'est un membre, on utilise son id, si c'est un utilisateur anonyme, on procède soit pas ip, soit par cookies, soit avec les 2.
ensuite le principe est en gros comme l'a dit Samy.
Il vaut mieux utiliser le timestamp, c'est plus souple qu'une date déjà formatée
les liens sont en dur sur le site ? ils viennent d'une base ?
:/-
-
@PilouJe vois pas pourquoi je me suis embeter a te répondre... La solution est grosso modo dans cet algo
Si ya des choses que tu piges pas dis moi ^^ des souçis d'implémentation -
J'en reviens a ce que ThEBiShOp dit au sujet du timestamp. c'est peut être plus souple car tu n'a qu'un seul nombre mais c'est plus compliqué a utilisé avec sql du moins, c'est plus facile d'utiliser les date géré directement par sql.
personellement je pense que le temps unix devrait s'utiliser seulement avec php et non pas sql.
les date avec sql sont beaucoup plus maniable mais bon, tu va me dire que dans son exemple, on s'en fou un peu car il ne manipule pas les variables de temps.
bref, j'arrete l'hors sujet :p
Pilou, regarde le début de code qu'on t'as donné au dessus. utilise le et fait toi même le code.
Si tu as suivi le tuto du SDZ, tu devrait y arriver sans trop de mal.
On est jamais mieux servi que par soit même ;)
Bonne chance :) -
Contributeur@okunion ne gère pas vraiment une date dans ce cas, on fait uniquement une comparaison sur une durée fixe, le timestamp suffit donc largement, mais ça n'engage que moi ;)
-
-
Ok j'essaye ;)
-
Pourquoi faire Compliqué quand on peut faire simple ? le time stamp ca veut dire que tu dois faire
$timestampduclic
$timestampactuel
$nombredesecondeen24h
$test = $timestampactuel - $timestampduclic
Si $test > $nombredesecondeen24h
...
J'éxagère mais c'est plus complexe quoi lol :p
C'est par contre plus souple je te l'accord !
Et puis avec le bug de l'an 2032 ca risque d'être une mauvaise habitude a ne plus prendre d'utiliser les timestamp hihi ! -
Pour mon champ ip c'est quel type que je dois prendre ?
-
Contributeurréfléchis à ta question, c'est comment une ip ?
123.123.123.123
ça peut être quoi comme type ? -
varchar ?
-
-
Contributeur@Samyoui, et il en va de même pour un code postale, on pourrait penser à mettre un int, mais il faut le mettre en varchar, notamment pour pouvoir utiliser la clause like en sql (recherche par département par exemple)
-
-
Contributeurouais