您的位置:

关于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存到数组,然后遍历数组吧。这样也避免了题目重复。在数据库里如果一次一条记录随机抽取,要考虑碰巧重复的问题。批量选取你就按上面我说的试试。