CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Calculer si dix secondes se sont

SergeantCastlez
SergeantCastlez
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
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
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
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
Niveau 10
21 avril 2014 à 17:43:01

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

Pseudo supprimé
Pseudo supprimé 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é
Pseudo supprimé 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
Niveau 12
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é
Pseudo supprimé 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é
Pseudo supprimé 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
Niveau 12
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:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment