本文目錄一覽:
- 1、假設我用PHP做了一個在線考試系統,有一個學生正常登錄了,然後他通過在瀏覽器地址欄直接輸入某個網頁的
- 2、php考試系統怎麼去做?
- 3、php考試系統怎麼去做
- 4、用php+mysql做一個題庫系統,隨機抽取五百題左右生成考試卷,最有效率的做法是什麼?
假設我用PHP做了一個在線考試系統,有一個學生正常登錄了,然後他通過在瀏覽器地址欄直接輸入某個網頁的
可以在打開這個系統的時候系統生成一個數組存在session中,當有人登錄或者未登陸直接訪問入口文件以外的文件時,做個判斷,看當前登錄或者未登錄的人是否在session中.如果存在就是擁有訪問權限,否則不可以. session中可以存儲的是擁有權限用戶的名字,分組或者ip等等.
基於上述的判斷,也可以在入口文件被登錄時生成一個常量,在直接訪問入口文件以外的文件時,判斷這個常量值,以便控制用戶是否是經由入口文件訪問其他文件的!
php考試系統怎麼去做?
我只說簡單的吧 首先設計數據表questions,questions表包括三個字段,id,question,answer 分別是,題目ID,題目,題目答案 然後在前台 ?php $num=array(); //保存題目數的數組 for($i=0;$i$question_num;$i++) //$question_num是要讀取的題目數量 { $b=mt_rand(0,$max_questionID); //這裡$max_questionID是說你的數據表中一共幾道題。 while(in_array($b,$num)) { $b=mt_rand(0,$max_questionID); //這個循環是為了防止生成重複的題目號 } $num[]=$b; } ? 這樣我們就得到了一個保存着要讀取的題目號的數組; 然後就可以連接數據庫進行讀取了 ?php mysql_connect(“”,””,””); mysql_select_db(‘db’); mysql_query(‘SET NAMES gb2312′); foreach($num as $value) { $string.=$value.’,’; } $string=substr($string,0,-1); $sql=”select question,answer from questions where id in ($string)”; $r=mysql_query($sql); $answer=array(); $i=0; while($row=mysql_fetch_array($r)) { echo $row[‘question’].’br’; $answer[$i][]=$row[‘answer’]; //把答案保存進一個二維數組 $i++; } $fname=mt_rand(0,1000); $fp=fopen($fname,’w’); fwrite($fp,serialize($answer)); //把序列化後的答案寫入一個隨機生成的文件中; fclose($fp); ? 添加題目就不用我說了吧?插入數據唄。。。很簡單,不啰嗦了 然後是得分是么? 前台設計的時候要注意,單選框的名字要是一個數組才行,input type=”radio” name=”answer[]” value=”a”/類似這樣的,並且創建一個隱藏域input type=”hidden” value=”? echo $fname ?” name=”fname” /這是為了能夠獲得此次考試對應的答案 後台就可以通過這個數組來獲取回答者的答案並且進行判斷了 ?php $answer=$_POST[‘answer’]; $fname=$_POST[‘fname’]; $fp1=fopen($fname,’r’); $content=fread($fp); fclose($fp1); $rightanswer=unserialize($content); 剩下得就是判斷提交的答案是否與正確答案相同了,然後加分數,不用啰嗦了吧? ?
求採納
php考試系統怎麼去做
一般在線考試系統,會事先將題庫和題型都設置好,並設置考試時間。在沒有到達考試時間時,考生登錄系統進入等待頁面,到達考試時間後用戶進入考場,顯示考試試題,考生作答完成提交自動閱卷生成成績。
試題只在考試時生成試卷,提交答案時操作數據庫,這個應當不存在什麼壓力不壓力的。但是考慮將試題輸出到客戶端緩存,這個是有必要的。假若為每個用戶生成的試卷都不相同時,則可以試卷存儲到cookie(Cookie是保存在客戶端的,而且可以設置過期時間,考試結束提交試卷後清空),進入考場後從Cookie讀取試卷而無需再次從數據庫生成下載,即使中途斷電,試題也無需再次生成。
至於有的朋友說將試題輸出到JS,這個是不可行的,因為JS只能在當前頁面保存,刷新操作或者跳轉頁面都會丟失,處理起來也麻煩,而且還很有可能沒考試考題都泄露乾淨了。
用php+mysql做一個題庫系統,隨機抽取五百題左右生成考試卷,最有效率的做法是什麼?
php裏面有array_rand函數,你要是一道題一道題的讀出來,或許也可以嘗試一下。但是要是一下子都讀出來,即便這個函數效率可以的話,隨機取出id數組,查詢 「where id in 數組」 就不如直接在數據庫里隨機抽取記錄。\x0d\x0a如何從數據表裡隨機抽取記錄呢,想想辦法還是有一些,就是不知道效率如何。有的是說用max_id*rand(),那一條一條抽取還是可以的。怎麼批量隨機抽取呢,可以試着排序,然後選取前500題,排序可以想辦法用一些函數(選取一些執行效率高的),如何md5,sha1,這種。如果為了使結果更具有隨機性,可以把字段值再與一個隨機數運算一下。僅供參考。\x0d\x0a========================\x0d\x0a我想你還是用array_rand隨機抽500個id存到數組,然後遍曆數組吧。這樣也避免了題目重複。在數據庫里如果一次一條記錄隨機抽取,要考慮碰巧重複的問題。批量選取你就按上面我說的試試。
原創文章,作者:FUBYH,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/316531.html