Limiter les requète sql des utilisateurs...

[Résolu/Fermé]
Signaler
Messages postés
102
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
11 avril 2012
-
Messages postés
102
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
11 avril 2012
-
Bonjour,
j'aimerais savoir comment limiter le nombre de requêtes sql qu'envoient les internautes, quelque chose qui ressemble un peu au système de login où à partir d'un certain nombre de tentatives il faut rentrer le code d'une image. Parce que sur mon site qui est un jeu, les joueurs pour faire certaine choses plus vite font f5 très vite pour refaire la manip et donc cela fait dépasser le max_user_connection et donc buguer la base de données.
Si quelqu'un comprend mon problème ce serait sympa de m'aider ;)
@+

7 réponses

Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Salut
Je pense qu'un système Captcha mettra fin au spam ;)
Je te conseil ... → Captcha.fr (facile à installer et tu as un exemple)
Messages postés
102
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
11 avril 2012
14
Merci j'utiliserai ce système pour les inscriptions :) mais mon problème n'était pas exactement celui-là c'est juste par exemple pour limiter le nombre par seconde d'envoi de données POST par un formulaire est ce possible ?
Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Ha ! Je pense avoir compris : Les joueurs (mauvais apparemment) réactulisent la page qui leur a fait gagner des points (25 par exemple) ainsi ça fait toujours 25 + 25 + 25 + 25 + ... (Les tricheurs :p ).

Je serais toi, j'utiliserai les sessions. Depuis un script, tu enregistres dans $_SESSION['points_gagnes'] le nombre de points à ajouter et tu rediriges (avec la fonction header) vers une page qui va ajouter ces points puis supprimer la variable $_SESSION['points_gagnes'] mais avec une condition : Que la variable $_SESSION['points_gagnes'] existe. Comme un code est mieux qu'un long discours :

<?php
if(!empty($_SESSION['points_gagnes'])) {
  // Tu te connectes à la base, tu ajoutes les points puis tu te deco
  unset($_SESSION['points_gagnes']); // on supprime la variable
}
else {
  echo 'Tricheur, voleur, menteur !! Tu es VIRÉ !';
}
?>


Pour la fonction header() :
header('Location: tacible.php'); exit;


Si tu n'as pas bien compris, n'hésite pas.
Messages postés
102
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
11 avril 2012
14
En fait c'est pas de la tricherie, par exemple il y a une page bâtiments (pour construire les bâtiments lol) et en cliquant sur construire ça envoie un formulaire et ça lance la construction de ce bâtiment. Dans le jeu il y a une technologie qui permet d'avoir une liste d'attente c'est à dire de mettre plusieurs bâtiments à la suite sans à avoir à y retourner tout le temps. Et donc pour remplir cette liste plus vite les joueurs font actualiser très vite (quand ils veulent faire plusieurs fois le même bâtiment), et quand tout le monde fait ça en même temps beaucoup de requêtes sont envoyées et ça fait planter la base de données parce que mon offre d'hébergement n'a qu'un max_user_connexion de 10. L'header, je l'utilise assez souvent mais si j'en met un ça sera peut être moins pratique car faudra retrouver le bâtiment et recliquer dessus. Le truc c'est qu'il faudrait autoriser les actualisations (donc pas header) mais que ça ne marche pas à chaque coup, qu'il y ait un nombre maximal autorisé de requêtes par seconde par joueur. Mais bon si c'est pas possible tant pis, je mettrai un header, ça les fera rester plus longtemps quand ils seront connectés lol
Merci à toi de t'intéresser à mon problème :-)
@+
Messages postés
18596
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 septembre 2021
4 319
Essaye toujours avec le timestamp. Tu mémorise la dernière excécution de la page dans $_SESSION['last_refresh'] et tu vérifie qu'il y ai au moins x secondes. Si il y a moins que x secondes, tu affiche un message "Veuiller patienter un peu SVP" sinon tu fais ce qu'il faut faire.
Messages postés
102
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
11 avril 2012
14
Excellente idée !!!! merci :-) Je teste et je te dis si ça marche ;)
Messages postés
102
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
11 avril 2012
14
Depuis hier ça a l'air de marcher merci ;)