10542 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je suis en train de créer un compte à rebours sur un jeu de lettres PHP (type boggle, avec des anagrammes) dont la page est constamment rafraîchie.

J'ai créé une fonction js pour comparer(*) le timestamp actuel (questionné en js) au timestamp de fin de jeu (défini dans une session php)(**) à chaque fois que le joueur presse une lettre dans un input(***)
Mais cette fonction ne déclenche pas...

(***)
<form action="play.php" method="post">
  <input type="text" name="mot" id="mot" placeholder="mot" maxlength="16" autofocus onkeypress="isItTheEnd();">
  <input type="submit" name="ok" value="ok" id='envoimot'>
</form>



(**) -- début du fichier play.php

// nombre de coups
$_SESSION['tentatives'][] = '1';
$tentatives = count($_SESSION['tentatives']);

// dès le premier coup, inscrire quand commence le jeu (timestamp du 1er coup) dans une session pour pouvoir (js) bloquer le jeu après 2mn (timestamp+120) 
if($tentatives == '1') {
  $now = strtotime("now");
  $_SESSION['timestamp'] = [
    'debut' => $now,
    'fin' => $now+120,
  ];
}


(*) -- fin du fichier play.php

<script>
function isItTheEnd() {
// définir le timestamp actuel
  var timestamp = Math.round(new Date().getTime() / 1000);

// réagir avec une popup si le timestamp actuel est plus grand que le timestamp de fin qui a été établi et stocké en session
  if(timestamp > <?php echo $_SESSION['timestamp']['fin']; ?>) {
    alert('stop');
  }
}
</script>


Avez-vous une idée de la raison de la raison qui explique pourquoi ma fonction js ne déclenche pas (je suppose que la passation d'une valeur PHP à JS fonctionne mal ?) et d'une solution pour arriver à mes fins, svp ?

Merci d'avance pour votre aide ! Smiley cligne
Modifié par Reka (10 Jan 2019 - 23:05)
Au temps pour moi, mon script fonctionne.
Je peux pas supprimer mon post, donc pardon pour le dérangement Smiley cligne
Si je peux me permettre tu as un problème avec ta façon de gérer le temps car tu compares le timestamp du serveur avec celui du client.

Comment va réagir ton programme si un utilisateur est dans un fuseau horaire différent de celui de ton serveur ?