ตัวอย่างระบบข้อสอบ online โดยนักเรียน นักศึกษา จะต้อง login ก่อนโดยจะเก็บข้อมูลส่วนตัว และลำดับคำถามไว้ในเซคชั่น
และเพราะว่า php ตั้งเวลาไว้ให้เซคชั่นมีอายุ 20 นาที แต่มีเวลาทำข้อสอบ 120 นาที ทำให้เซคชั่นหมดเวลาไปก่อน จึงต้องใช้ jQuery มาต่ออายุให้เซคชั่นทุก ๆ 10 นาที เพื่อรักษาข้อมูลเอาไว้
ไฟล์แสดงข้อสอบ (ใช้จริง ๆ ควรแยก javascript ไปไว้ในอีกที่หนึ่ง)
<!DOCTYPE html>
<html> <head> <meta charset="UTF-8"> <title>ข้อสอบ</title> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> </head> <body>
<?php
if (empty ($_POST)) {
?> <div class="container"> <h2>Vertical (basic) form</h2> <div class="row"> <div class="col-md-2"><b>Stat :</b></div> <div class="col-md-2" id="startA"></div> <div class="col-md-2"><b>End :</b></div> <div class="col-md-2" id="endA"></div> <div class="col-md-2"><b>Last Update :</b></div> <div class="col-md-2" id="periodsA"></div> </div> <form id="examinationF" action="examination.php" method="post"> <div class="form-group"> <label for="name">Name :</label> <input type="text" name="name" id="name" class="form-control" placeholder="Enter your name"> </div> <div class="form-group"> <label for="surname">Surname :</label> <input type="text" name="surname" id="surname" class="form-control" placeholder="Enter your surname"> </div> <div class="checkbox"> <label><input type="checkbox" name="accept">พร้อมทำข้อสอบในเวลาที่กำหนด</label> </div> <button type="submit" class="btn btn-default">Submit</button> </form> </div> <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> <script> $ (function () { /* keep session */ function sessionPostpone () { $.ajax ({ "cache" : false, "type" : "post", "success" : function (datas) { $ ('#endA') .text (datas.time_end) ; $ ('#periodsA') .text (datas.update+ ' ('+datas.periods+') ') ; $ ('#startA') .text (datas.time_start) ; }, "url" : "session.php" }) ; } sessionPostpone () ; var interval = 1000 * 60 * 10; // every 10 minutes setInterval (function () { sessionPostpone () ; }, interval) ; /* submit form */ var timeout = 1000 * 60 * 120; // 120 minutes setTimeout (function () { $ ('#examinationF') .submit () ; }, timeout) ; }) </script>
<?php
}
else
{ echo'<h1>คำตอบของคุณคือ</h1>', '<pre>',print_r ($_POST, true) ,'</pre>';
}
?> </body>
</html>
ไฟล์ไว้เรียกดูข้อมูล และยืดอายุ session ออกไป
<?php
session_start () ; $time = new DateTime () ; if (! isset ($_SESSION['id'])) { $datas = []; $_SESSION['id'] = session_id () ; $_SESSION['time_start'] = $time->format ('H:i:s') ; $time_end = $time->modify ('+2 hour') ; $_SESSION['time_end'] = $time_end->format ('H:i:s') ; $_SESSION['time_end_timestamp'] = time ($time_end) ;
} $period = 10;
$_SESSION['periods'] = round ( (strtotime ($_SESSION['time_end']) - time ($time)) / 60 / $period) ;
$_SESSION['update'] = $time->format ('H:i:s') ; header ("Content-type: application/json; charset=utf-8") ;
echo json_encode ($_SESSION) ;