Requetes ajax

Résolu
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008 - 4 sept. 2007 à 00:52
philippegueniche Messages postés 2 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 6 mars 2008 - 6 mars 2008 à 16:44
Bonsoir;
Cela fait plusieurs mois que je me dépatouille tout seul sur un site, mais la je galere vraiment,
Je viens voir des grands programmeurs car c'est desepéré pour moi.

Mon problème:
Ayant un serveur local, j'ai dévellopé tout mon site dessus, puis lors de la migration pour l'hebergement, une faille de sécurité est apparue a cause du ping qui est trop elevé;
dans mon jeu en ajax, mon fichier "ok.php" (fait pour valider une bonne réponse par sessions) renvoit un lien permettant de retourner sur le jeu.
Hélàs pour moi, lorsque un joueur clique sur ce lien 5 fois de suite très rapidement, il renvoit 5 bonnes réponses.
Comment pourrais-je faire pour limiter ce temps sachant qu'avec les cookies + temps c'est pas gerable car le jeu va trop vite.
Le site fonctionne tres simplement

pour un lien :      [# Mon compte]


dans head:        <script type='text/JavaScript'>
var xhr = null;
function getXhr()
{
     if(window.XMLHttpRequest)xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
  {
  try{
     xhr = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e)
     {
     xhr = new ActiveXObject("Microsoft.XMLHTTP");
     }
  }
else
  {
  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
  xhr = false;
  }
}

function ShowPage(page)
{
getXhr();
xhr.onreadystatechange = function()
    {     if(xhr.readyState 4 && xhr.status 200)
     {
     document.getElementById('page').innerHTML=xhr.responseText;
     }
    }
xhr.open("GET","ajax.php?page="+page,true);
xhr.send(null);
}

</script>

Dans ajax.php : $page=$_GET['page'];

     if($page==1)require 'index2.php';

Si vous me donnez un idée plutot PHP, jsuis pas contre car le javascript et moi, c'est pas le top du tout lol...
Merci pour votre interret;
Très coordialement, sbool

13 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 sept. 2007 à 14:34
non, pas dans l'appel de la page, ça pourra être contourné...
plutôt une variable de session par question:

if(!isset( $_SESSION['question23_deja_repondu'])){
    enregistrement de la réponse ou ce que tu veux;
    $_SESSION['question23_deja_repondu'] = true;
}
else {
    echo 'question 23 : déjà répondu !';
}

ou sinon tu marques dans ta base de donnée que la question a déjà été répondue (je sais c'est pas français, mais on se comprend :))
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
5 sept. 2007 à 14:07
Houlà, il te faut lire quelques tutoriels sur le javascript !

dans le head :

<script type='text/JavaScript'>
    function DisableButton(id){
        document.getElementById(id).disabled=true;
    }

</script>

dans le body :

 

je te conseille de toujours mettre les attributs dans cet ordre, c'est plus facile de s'y retrouver (ou un autre ordre si tu préfères mais bon) :
id, type, name, value, style, fonctions js
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 sept. 2007 à 01:56
Salut,

la réponse est dans la question :

mon fichier "ok.php" (fait pour valider une bonne réponse par sessions)

-> quand tu reçois la réponse tu mets :

if(!isset( $_SESSION['deja_repondu'])){
    enregistrement de la réponse ou ce que tu veux;
    $_SESSION['deja_repondu'] = true;
}
else {
    echo 'déjà répondu !';
}
0
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
4 sept. 2007 à 14:28
Salut evangun, merci de ton support,
j'ai compris ce que tu veux que je fasse, cepandant, durant le jeu, la personne est redirigée vers cette page (ok.php) a chaque bonne reponse, puis à la page qui met au hazard une autre question ainsi de suite...
Donc si j'ajoute le script, si le joueur à deux bonnes reponses à la suite ca ne va plus marcher.
C'est plutot autour de ca mon probleme je crois:
xhr.open("GET","ajax.php?page="+page,true);
mais je ne suis vraiment pas assez expérimenté en javascript pour optimiser ce petit bout.
Merci pour d'eventuelles suggestions, critiques ou support.
@ très bientôt , Sbool.
0

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

Posez votre question
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
4 sept. 2007 à 15:07
Oui, c'est parfait!
dans ok.php => $session'dejavu'++;
Dans moteur.php =>
$conneries = $session'dejavu';
if ($conneries < 1) { $session'scrore' = $score - $conneries; $session'dejavu'=0;}
elseif ($conneries < 5) { $session'scrore' = $score - $conneries; $session'dejavu'=0; echo'Merci de ne cliquer qu'une seule fois sur mes lien'; }

Avec un truc du genre je devrais m'en sortir.
Merci Evangun!!
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 sept. 2007 à 17:43
Je t'en prie :)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 sept. 2007 à 19:33
Hello,

je ne suis pas convaincu (sauf ton respect Evan hein :-) ) : les sessions et Ajax, ça fait rarement bon ménage.
Puisque ton site requiert javascript (cf ajax), je pense que tu devrais passer par une solution bcp plus simple (sauf si la solution proposée fonctionne hein, à voir, je n'ai pas bien compris le fonctionnement de ton jeu et ce qu'Ajax vient faire là-dedans) : dès qu'il clique (que ce soit un bouton ou un lien), vant de faire ton appel ajax, tu désactives le lien/bouton.
[bla.php bla]
=>
elem = document.getElementById('a1');
a1.href='';

=>
elem = document.getElementById('b1');
elem.disabled=true;
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 sept. 2007 à 20:08
Hello Malalam :)

Mais avec cette solution tu laisses la faille qui permet d'avoir plus de points que prévu. Alors oui autant utiliser cette méthode aussi pour l'esthétique, mais comme complément.
Moi non plus je ne suis pas très au fait du fonctionnement de ce jeu, je donnais juste une solution générique à ce genre de problèmes. Après, Ajax + redirection, oui ça me paraît un peu louche aussi, mais bon :)
Ceci dit, Ajax + session, a priori pas de contre-indication !? A quoi penses-tu Malalam ?
0
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
4 sept. 2007 à 23:53
Voilà quelques echanges constructifs du coup.
Pour ma part et pour repondre à malalam dans un premier temps, les sessions passent nickel depuis que je tripote ajax, les cookies aussi d'ailleurs, mais j'ai je ne m'en sert que pour controler le temps et frequence d'utilisation.
J'ai testé:

[# bla]
<script type='text/JavaScript'>elem = document.getElementById('a1');
a1.href='';

Ca fonctionne comme d'hab, si click 10 fois, score = 10.

Pareil pour:

 
<script type='text/JavaScript'>
elem = document.getElementById('b1');
elem.disabled=true;
</script>

Sinon, pour mon post précédent, j'ai pas réussit a faire grand chose de productif en fait.
Je m'en remmet donc à vous et encore merci!
0
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
5 sept. 2007 à 00:34
Jai egalement testé
[# bla]
et même chose...
0
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
5 sept. 2007 à 00:55
OK, j'ai enfin trouvé...
Très simple, (je donne la solution car je ne pense pas etre le seul à rencotrer ce probleme, cela peut egalement peut etre optimiser quelques sites, a confirmer...)

[# 1]

Les deux anti-slash car c'est dans un echo.
Aller @ tchao et encore merci!
0
sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
6 sept. 2007 à 00:58
Ok thank you.
Encore  merci lol
0
philippegueniche Messages postés 2 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 6 mars 2008
6 mars 2008 à 16:44
Si quelqu un a la reponse a son probleme cela peut m interesser ...

Philippe Gueniche: Président du conseil d'administration du Groupe Axiome

Vous pouvez me contacter en consultant le site internet de Axiome à l' adresse:

Axiome.fr recrute :

Développeur PHP Un minimum de 2 ans d'expérience

Autonomie, rigueur, capacité d'adaptation, rapidité d'exécution, solides connaissances en programmation web : PHP5, POO, SQL, XML, AJAX /JAVASCRIPT - Notion en AS2/AS3/FLEX - Bases de données : ORACLE , MYSQL - Connaissances en administration linux seront bien appréciées.
Poste à temps complet, basé à Clichy (92)
Rémunération : en fonction du profil
Début : dès que possible
Si vous êtes intéressé, merci d'envoyer votre CV à job@axiome.fr
0