comment rendre compte à rebours pour ne pas réinitialiser sur l'actualisation de la page
Je suis entrain de créer un examen en ligne page pour mon projet. J'ai un compte à rebours, mais il remet sur le rafraichissement de la page. Comment puis-je faire pour ne pas réinitialiser?
La minuterie est réglée par l'extraction de temps à partir de db. Je suis à l'aide de php et mysql. S'il vous plaît aider moi.
Voici mon code.
<?php
$result=mysql_query("select * from test where testid='29'");
while($time=mysql_fetch_array($result)){
$dateFormat = "d F Y -- g:i a";
$targetDate = time() + ($time['duration']*60);
$actualDate = time();
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
$remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
$remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
$actualDateDisplay = date($dateFormat,$actualDate);
$targetDateDisplay = date($dateFormat,$targetDate);
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var days = <?php echo $remainingDay; ?>
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown ()
{
seconds--;
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
hours = 23
}
document.getElementById("remain").innerHTML = " "+hours+" hr "+minutes+" min "+seconds+" sec";
SD=window.setTimeout( "setCountDown()", 1000 );
if (minutes == '00' && seconds == '00') {
seconds = "00"; window.clearTimeout(SD);
window.location = "result.php"
}
}
</script>
</head>
<body onLoad="setCountDown();">
<div id="remain">
<?php echo "$remainingHour hours, $remainingMinutes minutes, $remainingSeconds seconds";?>
</div>
Vous devez vous connecter pour publier un commentaire.
Vous devriez lire la valeur dans la variable de session et d'utiliser ensuite:
session_start()
de mon code. Si la session n'est pas toujours pas commencé, alors vous pouvez ajouter, si l'état de vérifier si la session est lancée. Comme ceci: stackoverflow.com/a/18542272/1119550Lorsque l'utilisateur démarre l'examen, enregistrer l'heure de début dans la base de données. L'utiliser pour tout. Ne comptez pas sur le côté client de code de ce que l'utilisateur peut les modifier facilement.
Si vous enregistrez l'heure de début, vous savez que lorsque l'utilisateur a commencé et ce que l'heure actuelle est. Vous pouvez l'utiliser pour voir si le temps est en place ou pas. Un javascript timer est bon de montrer comment le temps restant, mais il devrait être d'obtenir cette information à partir de la base de données.
Vous aurez probablement besoin d'enregistrer un tableau comme active_exams avec un examId champ et datetimeStarted. Chargez ensuite le timer comme le nombre de secondes pour que l'examen depuis qu'il a commencé.
Vous pouvez être en mesure de créer un peu de solution de contournement avec les cookies, localStorage ou même de la session, mais gardez à l'esprit ceux-ci seront modifiables (ou au moins oubliable dans le cas de la session) par l'utilisateur.
Actualisation de la Page n'a pas d'importance si vous avez de la Minuterie de la "start-temps" enregistré dans votre base de données pour un utilisateur particulier.
Chercher ce "début" de la base de données et de calcul pour obtenir le consommé de l'époque et, par conséquent montrer le restant ou le temps écoulé.