SOURCE CODE
<? // โปรแกรมนี้ปรับมาจาก http://www.thaiall.com/quiz/open10.php?action=source // ปรับปรุง : 2550-01-08 (เริ่มพัฒนา : 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 = "<html><head><title>ข้อสอบ ". $data_name ."</title> <meta http-equiv=content-type content='text/html; charset=windows-874'> <style type='text/css'> textarea{font-family:microsoft sans serif;font-size:12px;color:blue;background:white;} td{font-family:microsoft sans serif;font-size:12px;} body{font-family:microsoft sans serif;font-size:12px;} </style></head><body bgcolor=#ffffdd> <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 = "<center><font size=0> <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>ศูนย์สอบ 3 เว็บไซต์ : <a href=http://lampang.thcity.com/quiz/indexo.html>lampang.thcity.com</a> | <a href=http://www.thaiall.com/quiz/indexo.html>thaiall.com</a> | <a href=http://www.thaiabc.com/quiz/indexo.html>thaiabc.com</a> <br>Version $version<br>Time : $t_now <a href=open10.gif>#</a> <br>"; $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 = split("\t",$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 = split("\t",$v); 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 = split("\t",$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 = 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 = split("\t",$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='ส่งคำตอบ'></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
ข้อสอบบางส่วน :
ทั่วไป
|
คอมพิวเตอร์
ศูนย์สอบ 3 เว็บไซต์ :
lampang.thcity.com
|
thaiall.com
|
thaiabc.com
Version 1.500108
Time : May 22,2013 2:12:26
#