CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [PHP] Calculer si dix secondes se sont

DébutPage précedente
1
Page suivantePage suivante
SergeantCastlez SergeantCastlez
MP
Niveau 10
21 avril 2014 à 17:04:27

écoulés.

Bonjour, j'ai un petit site avec un forum entièrement dev en php. Sauf que quand on spam le bouton envoyer dans un topic ( j'ai pas mis de captcha a l'interieur ) bah ça envoie plusieurs messages.

Donc j'ai eu l'idée de mettre un interval de 10 ou 20sec entre chaque message, j'ai donc créer un novueau champs dans ma table users que j'ai nommé "date_last_message" et qui s'update a chaque fois qu'on poste un message.

Cependant je sais pas comment faire pour vérifier si il y a eu au moins 10sec d'écoulés.

j'ai bien trouvé la fonction diff() mais j'ai pas compris son utilisation.

Vous pouvez m'aider ?

Merci bien.

vava740 vava740
MP
Niveau 10
21 avril 2014 à 17:10:33

Tu peux convertir la date stockée en base de données en timestamp, récupérer le timestamp actuel, et faire la différence entre les deux entiers ; ça te donnera le nombre de secondes écoulées entre l'envoi du dernier message et « maintenant ».

Sinon, oui DateTime::diff() te retourne une DateInterval ( http://www.php.net/manual/fr/datetime.diff.php ) mais dans ce cas ça te complique la tâche plus qu'autre chose.

SergeantCastlez SergeantCastlez
MP
Niveau 10
21 avril 2014 à 17:22:16

Je comprends pas comment faire la différence en fait, parce qu'un simple $date1 - $date2 ça fonctionnera pas

bookboy bookboy
MP
Niveau 10
21 avril 2014 à 17:32:50

Je pense que tu peux faire un truc du genre :

$taDate; // ta 1ère date
$taDate2; // ta 2ème date

$dateInterval = $taDate2.diff($taDate);
$secondsInterval = $dateInterval->s;

Teste un truc du genre.

SergeantCastlez SergeantCastlez
MP
Niveau 10
21 avril 2014 à 17:43:01

Petit soucis à cette ligne :
$dateInterval = $date2.diff($date);

Pseudo supprimé
Niveau 10
21 avril 2014 à 21:37:36

Vous vous embêtez pour rien :(

L'utilisateur a besoin d'être connecté pour poster non?
Sers toi des sessions.

1- Lorsque l'utilisateur Post :
| $_SESSION["lastPost"] = timestamp();

2 - Pour savoir si le gars peut poster :
| if( timestamp()-$_SESSION["lastPost"]>10 )
| {
| . . . // ok
| } else {
| . . . // moins de 10 sec
| }

Et voiloup!

Pseudo supprimé
Niveau 10
21 avril 2014 à 21:58:56

C'est vrai kermitou, faire ça ou alors tout simplement faire en sorte qu'un bot ne puisse pas s'identifier 40 fois sur le site en 10 secondes :doute:

http://redsky.fr/0-11-jvstats.html :d) Statistiques de vos pseudos JVC

NPlay NPlay
MP
Niveau 10
22 avril 2014 à 19:21:06

kermitou3 a correctement expliqué pourquoi passer par une variable de session serait inefficace.
Bloquer la fréquence de connexion ne résoudrait pas non plus le problème d'ailleurs. :noel:

Pseudo supprimé
Niveau 10
22 avril 2014 à 20:50:33

Oui j'y avais pas pensé pour la session :oui:
Par contre, bloquer la fréquence de connexion j'suis pas d'accord, puis t'es bien placé pour dire ça alors qu'il y a un bot qui circule où tu entres une liste de 30 pseudos et ça poste 1 message / 4 secondes sur le forum :hap:

Pseudo supprimé
Niveau 10
22 avril 2014 à 20:55:27

Et pour la solution de garder le timestamp en bdd lors du post,
Faut bien penser à faire la vérification en récupérant le dernier message posté par l'IP et non pas par le pseudo pour éviter le multicompte justement. Donc ça implique de garder aussi l'IP en mémoire pour chaque post si c'est pas déjà fait :(

NPlay NPlay
MP
Niveau 10
23 avril 2014 à 14:56:02

Garder l'IP et le pseudo en mémoire permet d'éviter les abus oui.

Je ne vois pas le rapport Serialesky pour la fréquence de connexion par contre. :noel:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment