Merci pour ta réponse.
En fait ce que j'ai fait, c'est le code ci-après, qui fonctionne bien à un souci près.
L'idée donc c'est qu'il y a un formulaire avec un champ, dans lequel l'utilisateur entre sa réponse.
Si elle est correcte, tant mieux, il a gagné.
Si elle est incorrecte, un message d'erreur s'affiche. S'il rentre à nouveau une réponse incorrecte trop rapidement (ici en moins de 30 secondes), le formulaire ne s'affiche pas, avec à la place un compte à rebours lui disant : "Vous ne pourrez pas saisir de nouvelle réponse avant X secondes".
Tout cela fonctionne. Si jamais l'utilisateur rafraîchit en faisant F5, ça fonctionne toujours, mais s'il se contente de retaper l'URL, tout est réinitialisé. Il doit y avoir un problème dans la session PHP. Où est mon erreur ?
Merci par avance !
<?php
if (!isset($time)) {
session_start();
$_SESSION['question_start'] = time();
$time=$_SESSION['question_start'];
}
?>
<?php if ($_POST['uname']=="bidule") {
?><div class="time message"><?php echo $bravo; $reussite=1; ?></div>
<?php }
if (isset($_POST['uname'])) {
?><div class="time message">
<?php
echo $erreur;
$timediff = time() - $_POST['timer'];
?>
</div>
<?php } ?>
<?php if ($reussite != 1) { ?>
<div class="time">Entrer la réponse :</div>
<?php
if ((isset($timediff)) && ($timediff < 30)) {
?>
<script>
var sTime = new Date().getTime();
var countDown = 120;
function UpdateTime() {
$("#form").hide();
var cTime = new Date().getTime();
var diff = cTime - sTime;
var seconds = countDown - Math.floor(diff / 1000);
if (seconds >= 0) {
var minutes = Math.floor(seconds / 60);
seconds -= minutes * 60;
$("#delai").html("<div style='padding:10px;'>Vous pourrez saisir une nouvelle réponse dans :<br/></div>");
$("#minutes").html(minutes < 10 ? "0" + minutes : minutes);
$("#seconds").html(seconds < 10 ? "0" + seconds : seconds);
} else {
$("#countdown").hide();
$("#form").show();
var compteur = 1;
clearInterval(counter);
}
}
UpdateTime();
var counter = setInterval(UpdateTime, 500);
</script>
<div id="countdown">
<div id="delai" style="float:left"></div>
<div id="minutes" style="float:left;">00</div>
<div style="float:left; font-size:2em; line-height: 100%;">:</div>
<div id="seconds" style="float:left;">00</div>
</div>
<?php } ?>
<div id="form">
<form id="form" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div id="input" class="container">
<label><b></b></label>
<input type="text" placeholder="" name="uname" maxlength="11">
<input type="hidden" name="timer" value="<?=$time;?>">
<button type="submit">OK</button>
</div>
</form>
<br/>
</div>
<?php } ?>
Modifié par cyberlp23 (16 Mar 2018 - 12:00)