Tag Archive session

Byphunsanit

เก็บ session ทำข้อสอบออนไลน์

ตัวอย่างระบบข้อสอบ 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);
Byphunsanit

ติดตั้ง moodle

  1. ถ้าไม่มี server ให้ Download xampp มาจาก http://Apache Friends
  2. Download moodle มาจาก moodle.org
  3. แตกไฟล์ออกมา ไว้ที่ C:\xampp\htdocs
  4. เปิดเว็บ http://localhost/moodle
  5. เลือกภาษา ผมเลือก Thai (th) กด ต่อไป
  6. ไดเรกทอรีข้อมูล เพื่อความปลอดภัย ให้ไปสร้าง folder ใหม่ที่ไม่สามารถเข้าถึงได้จากเว็บ เช่น D:\moodledata กด ต่อไ
  7. Choose database driver เลือก Improved MySQL (native/mysqli) กด ต่อไป
  8. Database settings ปกติ xampp จะใช้
    • Database host : localhost
    • Database name : moodle ตั้งชื่อตามต้องการหรือตามที่โฮสต์ที่เราเช่าสร้างไว้
    • Database user ใช้ root
    • Database password ถ้าลงใน xampp ปกติจะไม่มีรหัสผ่าน

    กด ต่อไป

  9. หน้าลิขสิทธิสรุปง่ายๆ คือ เราแจกฟรี ดังนั้นถ้ามีปัญหาอะไร ก็ฟ้องทางเราไม่ได้นะ รออะไรอยู่ กด ขั้นต่อไป
  10. ถ้าการทดสอบล้มเหลว ติดต่อ host เลยครับ อย่าลืม save หน้านี้ส่งให้เค้าไปดูด้วย ถ้าผ่าน (มีสีเหลืองไม่เป็นไร) กด ต่อ
  11. ไป

  12. ขั้นตอนนี้จะสร้างตารางในฐานข้อมูล จะนานเป็นพิเศษ ลุกไปชงกาเฟได้ กลับมา กด ต่อไ
  13. ถ้าเจอข้อความ “ไม่สามารถเชื่อมต่อกับ PHP เซสชั่น ตรวจสอบว่าบราวเซอร์สามารถใช้งานคุ้กกี้” ให้
    1. เปิด phpmyadmin ไปที่ SQL ใส่
      UPDATE `moodle`.`mdl_config` SET `value` = '/' WHERE `mdl_config`.`name` = 'sessioncookiepath';
      UPDATE `moodle`.`mdl_config` SET `value` = '1' WHERE `mdl_config`.`name` = '%sessioncookie%';
    2. ลบทุกอย่างใน D:\moodledata ออกจนหมด
  14. กรอกข้อมูล ใน General ก็พอ แล้วกด update profile เป็นอันเสร็จ