SOURCE CODE
<?php // โปรแกรมนี้ปรับมาจาก http://www.thaiall.com/quiz/open10.php?action=source // ปรับปรุง : 2564-03-02 (เริ่มพัฒนา : 2549-01-21) // ============================= // ลักษณะของโปรแกรม (Program Specification) // - สุ่ม คำถาม และให้เติมคำ ซึ่งมีความเป็นไปได้ที่จะถูกหลายกรณี // - จำนวนข้อสอบมีเท่าใดก็ได้ ขึ้นกับแฟ้มข้อสอบ โดยไม่ต้องแก้ไขโปรแกรม // - ตัวเลือกมีสูงสุดได้ 7 ตัวเลือก เพราะตัวแปร $c[ ] กำหนดไว้อย่างนั้น // ============================= // Session Configuration // อธิบายใน Short 12 ของ http://www.perlphpasp.com/php/indexo.html if ($_SERVER["SERVER_NAME"] == "www.thaiall.com") session_save_path("/home/users/web/b352/hy.thaiwebsearch/cgi-bin/tmp"); session_start(); if (isset($_GET["subj"])) $subj = "subj=".$_GET["subj"]; else $subj = ""; if (isset($_SESSION['name'])) $name = $_SESSION['name']; else $name = ""; if (isset($_SESSION['surname'])) $surname = $_SESSION['surname']; else $surname = ""; if (isset($_POST["name"])) { $name = $_POST["name"]; $_SESSION['name'] = $name; } if (isset($_POST["surname"])) { $surname = $_POST["surname"]; $_SESSION['surname'] = $surname; } // ============================= // Default Variable 1 $version = "1.500108"; $program_name = "open10.php"; $data_name = "gen01"; $score_name = "open10score.txt"; $t_now = date("F j,Y g:i:s"); $total_user = 100; // เก็บข้อมูลสมาชิกเพียง 100 ระเบียนเท่านั้น // ============================= // Default Variable 2 if (isset($_GET["subj"])) $data_name = $_GET["subj"]; if (isset($_GET["action"])) $data_name = $_GET["action"]; $header = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">'. "<head><title>ข้อสอบอัตนัย แบบเติมคำสั้น ๆ - ". $data_name ."</title> <meta http-equiv=content-type content='text/html; charset=utf-8'><meta name='viewport' content='width=device-width,initial-scale=1.0' /> <meta name='keywords' content='quiz,exam,open,short,answer' /> <meta name='description' content='ข้อสอบออนไลน์ แบบอัตนัย ด้วยการแบบเติมคำสั้น ๆ ซึ่งผู้ตอบจำเป็นต้องรู้คำตอบ ที่ต่างไปจากข้อสอบปรนัยที่มีตัวเลือกมาให้แล้ว' /> <meta property='og:image' content='http://www.thaiall.com/quiz/open10.gif' /> <script type='text/javascript'>function menu(){document.getElementsByClassName('topnav')[0].classList.toggle('responsive');}</script> <style>input[type='radio'] { -ms-transform: scale(2); /* IE 9 */ -webkit-transform: scale(2); /* Chrome, Safari, Opera */ transform: scale(2); }</style> <link type='text/css' rel='stylesheet' href='rsp81.css'><link rel='icon' type='image/x-icon' href='rsp.ico' /> </head><body id='main' style='background-color:#F57933;font-family:Kanit;'> <center><script type='text/javascript'><!-- google_ad_client = 'pub-3309619467978767'; /* 06 Quiz */ google_ad_slot = '9097620709'; google_ad_width = 728; google_ad_height = 90; //--> </script> <script type='text/javascript' src='http://pagead2.googlesyndication.com/pagead/show_ads.js'> </script>"; $footer = '<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Itim|Chonburi|Kanit|Prompt|Trirong|Taviraj|Taviraj|Mitr|Athiti|Pridi|Maitree|Pattaya|Sriracha" />' ."<center><script charset='windows-1251' type='text/javascript' src='http://www.yengo.com/show.cgi?adp=75951'></script> <br/><a href=?action=report>สถิติผู้ทำข้อสอบ แบบเติมคำสั้น ๆ ในช่องว่าง</a> | <a href=?$subj>เริ่มใหม่</a> | <a href=?action=source>Source Code</a> <br/>ข้อสอบบางส่วน : <a href=?subj=gen01>ทั่วไป</a> | <a href=?subj=computer01>คอมพิวเตอร์</a> <br/>ศูนย์สอบออนไลน์ : <a href=http://www.thaiall.com/quiz/indexo.html>thaiall.com</a> <br/>รุ่น $version<br/>Time : $t_now <a href=open10.gif>#</a> <br/><script>page='quiz_open10';</script><script src='http://hits.truehits.in.th/data/c0001941.js'></script> <noscript><a target='_blank' href='http://truehits.net/stat.php?id=c0001941'><img src='http://hits.truehits.in.th/noscript.php?id=c0001941' alt='Thailand Web Stat' border='0' width='14' height='17' /></a> <a target='_blank' href='http://truehits.net/'>Truehits.net</a></noscript> <!-- Histats.com (div with counter) --><div id='histats_counter'></div> <!-- Histats.com START (aync)--> <script type='text/javascript'>var _Hasync= _Hasync|| []; _Hasync.push(['Histats.start', '1,4598082,4,9,110,60,00011111']); _Hasync.push(['Histats.fasi', '1']); _Hasync.push(['Histats.track_hits', '']); (function() { var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true; hs.src = ('//s10.histats.com/js15_as.js'); (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs); })();</script> <noscript><a href='/' target='_blank'><img src='//sstatic1.histats.com/0.gif?4598082&101' alt='free web page counters' border='0'></a></noscript> <!-- Histats.com END --> </body></html>"; $error_name = "<center><font color=red size=6>กรอกชื่อ หรือนามสกุล ไม่ครบ<br/>แสดงว่าไม่อ่านคำชี้แจง ให้เริ่มต้นทำข้อสอบทั้งหมดใหม่<br/><br/>"; $error_subj = "<center><font color=red size=6>ไม่พบแฟ้มวิชาที่ท่านต้องการสอบ<br/>ต้องกลับไปเลือกวิชาให้ถูกต้อง<br/><br/>"; $remark = "<tr><td colspan=2 bgcolor=#660000><font size=0 color=white><b>คำชี้แจง</b> <dd>- ถ้าไม่กรอกทั้งชื่อ และสกุลของผู้ทำข้อสอบ จะไม่ตรวจข้อสอบให้ <dd>- ผลสอบจะเก็บเพียง 100 ระเบียนสุดท้าย โดยเรียงจากเวลาล่าสุด (ค่านี้ผู้ดูแลระบบเปลี่ยนได้) <dd>- ถ้าทำข้อสอบไม่ครบ จะไม่ตรวจข้อสอบให้ <dd>- เมื่อมีการตรวจคำตอบ จะบันทึกชื่อ และคะแนนลงฐานข้อมูล พร้อมเวลาเริ่มทำ และเวลาสิ้นสุด </td></tr>"; $remark_send = "<font color=red size=4>ต้องกรอกชื่อ และสกุลของผู้ทำข้อสอบ และทำครบทุกข้อ <br/>จึงจะตรวจ และบันทึกผลการทำข้อสอบ ลงสถิติผู้ทำข้อสอบ 100 คนล่าสุด"; // ============================= // View Source Code if (isset($_GET["action"])) { echo $header; if ($_GET["action"] == "source") { $ar = file($program_name); echo "<center><font size=6>SOURCE CODE</font><br/><textarea cols=80 rows=25 wrap=off>"; foreach ($ar as $k=>$v) echo htmlspecialchars($v); echo "</textarea>"; } if ($_GET["action"] == "report") { $ar = file($score_name); echo "<table width=750 align=center cellspacing=1 bgcolor=white> <tr bgcolor=black align=center><td align=center colspan=7><font color=white size=6>สถิติผู้ทำข้อสอบ แบบเติมคำในช่องว่าง</td></tr> <tr bgcolor=#dddddd align=center><td>ลำดับ</td><td>ชื่อ-สกุล</td><td>รหัสวิชา</td><td>ถูก</td> <td>ทั้งหมด</td><td>เวลาเริ่ม</td><td>เวลาเสร็จ</td></tr>"; $i=0; $bg = ""; foreach ($ar as $k=>$v) { $i++; if (!isset($_GET["top"]) || $i <= 10) { $ar = preg_split("/[\t]/",$v); // iconv('TIS-620','UTF-8//ignore',$v)); // $v; if (strlen($bg) == 0) $bg = " bgcolor=#ddffff"; else $bg = ""; if ($ar[3] == $ar[4]) $bg = " bgcolor=#ffdddd"; echo "<tr $bg><td>$i</td><td>$ar[0] $ar[1]</td><td><a href=?subj=$ar[2]>$ar[2]</a></td><td align=center>$ar[3]</td><td align=center>$ar[4]</td><td>$ar[5]</td><td>$ar[6]</td></tr>"; } } echo "</table>"; } echo $footer; exit; } // ============================= // Get Random value and Read file $cnt_quiz = 0; $data_namef = "open10". $data_name . ".php"; if (!file_exists($data_namef)) { echo $error_subj.$footer; exit; } $ar = file($data_namef); foreach ($ar as $v) { $q = preg_split("/[\t]/", $v); // iconv('TIS-620','UTF-8//ignore',$v)); // $v; // http://www.thaiall.com/quiz/open10.php if (strlen($q[2]) > 0) { // ตรวจว่ามีเฉลยหรือไม่ $qok{$cnt_quiz} = $v; $rnd{$cnt_quiz} = rand(); $cnt_quiz = $cnt_quiz + 1; } } // ============================= // General Variable $c[1] = array(1,2,3,4,7,5,6); $c[2] = array(5,7,2,3,4,1,6); $c[3] = array(4,1,2,5,7,3,6); $c[4] = array(2,3,5,4,1,6,7); $c[5] = array(4,6,7,3,1,2,5); $c[6] = array(7,6,5,2,4,1,3); $c[7] = array(2,4,1,3,7,6,5); // ============================= // Check Answer if (isset($_POST["action"]) && isset($_SESSION['start'])) { echo $header; if ($_POST["action"] == "check") { if (strlen($_POST["name"]) == 0 || strlen($_POST["surname"]) == 0) { echo $error_name.$footer; unset($_SESSION["start"]); // session_unset(); exit; } $right = 0; $wrong = 0; $qok{$cnt_quiz} = $v; foreach ($qok as $k=>$v) { $q = preg_split("/[\t]/",$v); // iconv('TIS-620','UTF-8//ignore',$v)); // $v; if (isset($q[2])) $qans2{$q[0]} = $q[2]; else $qans2{$q[0]} = ""; if (isset($q[3])) $qans3{$q[0]} = $q[3]; else $qans3{$q[0]} = ""; if (isset($q[4])) $qans4{$q[0]} = $q[4]; else $qans4{$q[0]} = ""; if (isset($q[5])) $qans5{$q[0]} = $q[5]; else $qans5{$q[0]} = ""; if (isset($q[6])) $qans6{$q[0]} = $q[6]; else $qans6{$q[0]} = ""; if (isset($q[7])) $qans7{$q[0]} = $q[7]; else $qans7{$q[0]} = ""; if (isset($q[8])) $qans8{$q[0]} = $q[8]; else $qans8{$q[0]} = ""; if (isset($q[9])) $qans9{$q[0]} = $q[9]; else $qans9{$q[0]} = ""; } foreach ($_POST as $k=>$v) { if ($k != "action" && $k != "name" && $k != "surname" && $k != "total" && $k != "subject") { // echo $k.$qans{$k}.$v; if (strlen($v) > 0) { $o = $right; if ($qans2{$k} == $v) $right++; else if ($qans3{$k} == $v) $right++; else if ($qans4{$k} == $v) $right++; else if ($qans5{$k} == $v) $right++; else if ($qans6{$k} == $v) $right++; else if ($qans7{$k} == $v) $right++; else if ($qans8{$k} == $v) $right++; else if ($qans9{$k} == $v) $right++; else $wrong++; } } } $total = $_POST["total"]; if ($total <= ($right + $wrong)) { echo "<table width=750 align=center cellspacing=1 bgcolor=white>"; echo "<td><center><font size=6>ผลการสอบ ของ<br/>". $_POST["name"] . " " . $_POST["surname"]; echo "</center><b>ทำถูก</b> = $right"; echo "<br/><b>ทำผิด</b> = $wrong"; echo "<br/><b>ได้ทำ</b> = ". $total; echo "<br/><b>จำนวนข้อสอบ</b> = ". $total; echo "<br/><b>เริ่มทำเวลา</b> = ". $_SESSION['start']; echo "<br/><b>แล้วเสร็จเวลา</b> = ". $t_now; echo "</td></table>"; $data = $_POST["name"]."\t".$_POST["surname"]."\t".$_POST["subject"]."\t"; $data = $data . $right."\t".$total."\t".$_SESSION['start']."\t".$t_now."\n"; if (file_exists($score_name)) { $fr = file($score_name); } else { $fr = array(); } $limit = count($fr); if ($total_user <= $limit) $limit = $total_user - 1; $fw=fopen($score_name,"w"); fputs ($fw,$data); for ($i=0;$i<$limit;$i++) fputs ($fw,$fr[$i]); fclose ($fw); echo "<meta http-equiv=refresh content='10;url=". $program_name . "?action=report&top=10'>"; unset($_SESSION["start"]); // session_unset(); } else { echo "<center><font color=red size=6>ท่านทำข้อสอบเพียง : " . ($right + $wrong) ." ข้อ<br/>"; echo "ไม่ครบ ". $total . " ข้อ<br/>จึงไม่ตรวจให้ .. ท่านต้องกลับไปทำให้ครบ<br/><br/>"; } } } else { // ============================= // Show Question $ar = file($data_namef); $q = preg_split("/[\t]/",$ar[0]); echo $header; $_SESSION['start'] = $t_now; echo "<form action='' method=post> <table width=750 align=center bgcolor=#dddddd> <tr><td colspan=2 bgcolor=black><font size=6 color=white>$q[1]</td></tr> $remark <tr><td align=right>ชื่อของผู้ทำข้อสอบ :</td><td><input name=name size=60 value='$name'> เช่น บุรินทร์</td></tr> <tr><td align=right>สกุลของผู้ทำข้อสอบ :</td><td><input name=surname size=60 value='$surname'> เช่น รุจจนพันธุ์</td></tr> </table> <table width=750 align=center border=1 bordercolor=black cellspacing=0> <td bgcolor=#dddddd>"; asort($rnd); // ทำให้ array จัดเรียงตามค่าสุ่ม $total_question = 0; echo "<table width=95% align=center bgcolor=white>"; $bg = ""; foreach ($rnd as $k=>$v) { $total_question++; $q = preg_split("/[\t]/",$qok{$k}); // iconv('TIS-620','UTF-8//ignore',$qok{$k})); // $qok{$k}; if (strlen($bg) == 0) $bg = " bgcolor=#ddffff"; else $bg = ""; echo "<tr $bg><td><font size=4>"; echo $total_question.". ".$q[1]."<br/>"; echo "<dd><dd>คำตอบ <input name=$q[0]>"; #$cok = rand(1,7); #for($i=3;$i<10;$i++) { # if (isset($q[$c[$cok][$i - 3] + 2])) { # if (strlen($q[$c[$cok][$i - 3] + 2]) > 0 && $q[$c[$cok][$i - 3] + 2] != "\r\n" && $q[$c[$cok][$i - 3] + 2] != "\n") # echo "<input type=hidden name=$q[0] value=". ($c[$cok][$i - 3]) .">". $q[$c[$cok][$i - 3] + 2]."<br/>"; # } #} echo "</td></tr>"; } echo "<tr><td align=center bgcolor=#ddffdd>$remark_send <br/><input type=submit value='ส่งคำตอบ' style='font-family:sawasdee;font-size:20px;font-weight:bold;width:160px;height:40px;background-color:yellow;'></td></tr></table> <input type=hidden value=check name=action> <input type=hidden value=$total_question name=total> <input type=hidden value=$data_name name=subject> </td></table></form>"; } echo $footer; ?>
สถิติผู้ทำข้อสอบ แบบเติมคำสั้น ๆ ในช่องว่าง
|
เริ่มใหม่
|
Source Code
ข้อสอบบางส่วน :
ทั่วไป
|
คอมพิวเตอร์
ศูนย์สอบออนไลน์ :
thaiall.com
รุ่น 1.500108
Time : November 23,2024 10:45:46
#
Truehits.net