Requetes ajax [Résolu]

sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 4 sept. 2007 à 00:52 - Dernière réponse : philippegueniche 2 Messages postés jeudi 6 mars 2008Date d'inscription 6 mars 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 sept. 2007 à 14:34
3
Merci
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 :))

Merci Evangun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de Evangun
Meilleure réponse
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 5 sept. 2007 à 14:07
3
Merci
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

Merci Evangun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de Evangun
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 sept. 2007 à 01:56
0
Merci
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 !';
}
Commenter la réponse de Evangun
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 4 sept. 2007 à 14:28
0
Merci
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.
Commenter la réponse de sbool
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 4 sept. 2007 à 15:07
0
Merci
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!!
Commenter la réponse de sbool
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 sept. 2007 à 17:43
0
Merci
Je t'en prie :)
Commenter la réponse de Evangun
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 4 sept. 2007 à 19:33
0
Merci
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;
Commenter la réponse de malalam
Evangun 1982 Messages postés dimanche 20 février 2005Date d'inscription 24 septembre 2012 Dernière intervention - 4 sept. 2007 à 20:08
0
Merci
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 ?
Commenter la réponse de Evangun
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 4 sept. 2007 à 23:53
0
Merci
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!
Commenter la réponse de sbool
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 5 sept. 2007 à 00:34
0
Merci
Jai egalement testé
[# bla]
et même chose...
Commenter la réponse de sbool
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 5 sept. 2007 à 00:55
0
Merci
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!
Commenter la réponse de sbool
sbool 115 Messages postés mercredi 27 août 2003Date d'inscription 7 mars 2008 Dernière intervention - 6 sept. 2007 à 00:58
0
Merci
Ok thank you.
Encore  merci lol
Commenter la réponse de sbool
philippegueniche 2 Messages postés jeudi 6 mars 2008Date d'inscription 6 mars 2008 Dernière intervention - 6 mars 2008 à 16:44
0
Merci
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
Commenter la réponse de philippegueniche

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.