ตัวอย่างระบบข้อสอบ online โดยนักเรียน นักศึกษา จะต้อง login ก่อนโดยจะเก็บข้อมูลส่วนตัว และลำดับคำถามไว้ในเซคชั่น
และเพราะว่า php ตั้งเวลาไว้ให้เซคชั่นมีอายุ 20 นาที แต่มีเวลาทำข้อสอบ 120 นาที ทำให้เซคชั่นหมดเวลาไปก่อน จึงต้องใช้ jQuery มาต่ออายุให้เซคชั่นทุกๆ 10 นาที เพื่อรักษาข้อมูลเอาไว้
ไฟล์แสดงข้อสอบ (ใช้จริงๆ ควรแยก javascript ไปไว้ในอีกที่หนึ่ง)
[code language=”php” title=”examination.php”]
<!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>
[/code]
ไฟล์ไว้เรียกดูข้อมูล และยืดอายุ session ออกไป
[code language=”php” title=”session.php”]
<?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);
[/code]
About the author