Timer for online examination system to stores the time for each individual section

18,543

Using a session, you'll need to track when the user's time expires for the section

<?php
// Upon starting the section
session_start();
$_SESSION['TIMER'] = time() + 600; // Give the user Ten minutes
?>

Dont do that on page reload though because they can simply refresh the page and reset the timer

On the page, use Javascript to display a clock:

<script type="text/javascript">
var TimeLimit = new Date('<?php echo date('r', $_SESSION['TIMER']) ?>');
</script>

You can then use the variable 'TimeLimit' to display a countdown

<script type="text/javascript">
function countdownto() {
  var date = Math.round((TimeLimit-new Date())/1000);
  var hours = Math.floor(date/3600);
  date = date - (hours*3600);
  var mins = Math.floor(date/60);
  date = date - (mins*60);
  var secs = date;
  if (hours<10) hours = '0'+hours;
  if (mins<10) mins = '0'+mins;
  if (secs<10) secs = '0'+secs;
  document.body.innerHTML = hours+':'+mins+':'+secs;
  setTimeout("countdownto()",1000);
  }

countdownto();
</script>
Share:
18,543
Bazooka
Author by

Bazooka

Updated on June 04, 2022

Comments

  • Bazooka
    Bazooka almost 2 years

    I am developing an online examination for which i need to have a countdown timer/clock to be displayed during the entire duration of the test. Also while displaying the final result the time taken to solve each individual questions should also be displayed along with the total time taken for the test.

    What are the possible best approaches to implement this functionality??

    <?php
    
    $countfile = "counter.txt";
    
    // location of site statistics.
    $statsfile = "stats.txt";
    
    // checks whether the file exist, if not then server will create it.
    if (file_exists($countfile)) {
    
    // open the counter hit file.
    $fp = fopen($countfile, "r"); 
    
    // reads the counter hit file and gets the size of the file.
    $output = fread($fp, filesize($countfile));
    
    // close the counter hit file.
    fclose($fp); 
    
    // get the integer value of the variable.
    $count = intval($output);
    }
    
    // if file is doesn't exist, the server will create the counter hit file and gives a value of zero.
    else { 
    $count = 0;
    }
    
    // showcount function starts here.
    function ShowCount() { 
    
    // declares the global variables.
    global $ShowCount, $countfile, $statsfile, $count;
    
    // get the current month.
    $month = date('m');
    
    // get the current day.
    $day = date('d');
    
    // get the current year.
    $year = date('Y');
    
    // get the current hour.
    $hour = date('G');
    
    // get the current minute.
    $minute = date('i');
    
    // get the current second.
    $second = date('s');
    
    // this is the date used in the stats file
    $date = "$month/$day/$year $hour:$minute:$second";
    
    // this is the remote IP address of the user.
    $remoteip = getenv("REMOTE_ADDR");
    
    // some of the browser details of the user.
    $otherinfo = getenv("HTTP_USER_AGENT");
    
    // retrieve the last URL where the user visited before visiting the current file.
    $ref = getenv("HTTP_REFERER");
    
    // open the statistics file. 
    $fp = fopen($statsfile, "a");
    
    // put the given data into the statistics file.
    fputs($fp, "Remote Address: $remoteip | ");
    fputs($fp, "Information: $otherinfo | ");
    fputs($fp, "Date: $date | ");
    fputs($fp, "Referer: $ref\n");
    
    // close the statistics file.
    fclose($fp);
    
    // adds 1 count to the counter hit file.
    $count++;
    
    // open the counter hit file.
    $fp = fopen($countfile, "w");
    
    // write at the counter hit file.
    // if the value is 34, it will be changed to 35.
    fwrite($fp, $count);
    
    // close the counter hit file.
    fclose($fp);
    
    // showcount variable is equal to count variable.
    $ShowCount = $count;
    
    // return the value of the count variable into showcount variable.
    return $ShowCount;
    }
    
    // display the value in the counter hits file.
    echo showcount(), " visits";
    
    ?> 
    

    I am using this script to track the visitor stats and time of visit...it is working fine.however I am not able to track the time of individual question in each category of the exam (each exam has multiple categories having multiple questions). Need help