Limiter les requète sql des utilisateurs...

Résolu/Fermé
Newphy Messages postés 102 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 11 avril 2012 - 5 juin 2009 à 18:21
Newphy Messages postés 102 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 11 avril 2012 - 7 juin 2009 à 11:59
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

avion-f16 Messages postés 18927 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 4 octobre 2022 4 427
5 juin 2009 à 19:14
Salut
Je pense qu'un système Captcha mettra fin au spam ;)
Je te conseil ... → Captcha.fr (facile à installer et tu as un exemple)
0
Newphy Messages postés 102 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 11 avril 2012 14
5 juin 2009 à 22:25
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 ?
0
avion-f16 Messages postés 18927 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 4 octobre 2022 4 427
5 juin 2009 à 22:36
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.
0
Newphy Messages postés 102 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 11 avril 2012 14
6 juin 2009 à 14:57
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 :-)
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 18927 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 4 octobre 2022 4 427
6 juin 2009 à 15:34
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.
0
Newphy Messages postés 102 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 11 avril 2012 14
6 juin 2009 à 16:17
Excellente idée !!!! merci :-) Je teste et je te dis si ça marche ;)
0
Newphy Messages postés 102 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 11 avril 2012 14
7 juin 2009 à 11:59
Depuis hier ça a l'air de marcher merci ;)
0