關於php做考試系統的信息

本文目錄一覽:

假設我用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-tw/n/316531.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FUBYH的頭像FUBYH
上一篇 2025-01-09 12:14
下一篇 2025-01-09 12:14

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 如何在樹莓派上安裝Windows 7系統?

    隨著樹莓派的普及,許多用戶想在樹莓派上安裝Windows 7操作系統。 一、準備工作 在開始之前,需要準備以下材料: 1.樹莓派4B一台; 2.一張8GB以上的SD卡; 3.下載並…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Java 監控介面返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控介面返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 分銷系統開發搭建

    本文主要介紹如何搭建一套完整的分銷系統,從需求分析、技術選型、開發、部署等方面進行說明。 一、需求分析 在進行分銷系統的開發之前,我們首先需要對系統進行需求分析。一般來說,分銷系統…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • 雲盤開源系統哪個好?

    本文將會介紹幾種目前主流的雲盤開源系統,從不同方面對它們做出分析比較,以此來確定哪個雲盤開源系統是最適合您的。 一、Seafile Seafile是一款非常出色的雲盤開源系統,它的…

    編程 2025-04-28
  • EulerOS V2R7:企業級開發首選系統

    本文將從多個方面為您介紹EulerOS V2R7,包括系統簡介、安全性、易用性、靈活性和應用場景等。 一、系統簡介 EulerOS V2R7是一個華為公司開發的企業級操作系統,該系…

    編程 2025-04-28

發表回復

登錄後才能評論