日期:2014-05-18  浏览次数:20697 次

怎样禁止页面刷新
在写在线考试系统的时候,因为试题是随机出的,怎样才能防止考生刷新页面选题啊?或者使刷新失效,刷新后还是这些题目并且时间并不重新计算

------解决方案--------------------
把右键和菜单栏屏蔽了.
------解决方案--------------------
<html> 

<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 

<head> 

<script language="javascript"> 

var ie =navigator.appName=="Microsoft Internet Explorer"?true:false; 

 

function keyDown(e) 



 if(!ie) 

 { 

var nkey=e.which; 

var iekey='现在是ns浏览器'; 

var realkey=String.fromCharCode(e.which); 

 } 

 if(ie) 

 { 

var iekey=event.keyCode; 

var nkey='现在是ie浏览器'; 

var realkey=String.fromCharCode(event.keyCode); 

if(event.keyCode==32){realkey='\' 空格\''} 

if(event.keyCode==13){realkey='\' 回车\''} 

if(event.keyCode==27){realkey='\' Esc\''} 

if(event.keyCode==16){realkey='\' Shift\''} 

if(event.keyCode==17){realkey='\' Ctrl\''} 

if(event.keyCode==18){realkey='\' Alt\''} 

 } 

 alert('ns浏览器中键值:' nkey '\n' 'ie浏览器中键值:' iekey '\n' '实际键为' realkey); 



document.onkeydown = keyDown; 

</script> 

</head> 

<body> 

//Javascript Document. 

<hr> 

<center> 

<h3>请按任意一个键。。。。</h3> 

</center> 

</body> 

</html>


------解决方案--------------------
屏蔽右键也就是用JAVASCRIPT 可这毕竟是在客户端。 客户也可以把JAVASCRIPT禁用的。
把菜单栏屏蔽了也没啥用 
按CTRL+N 就全出来了。

我觉得可以在SESSION里设置一个对象 这个对象就是这些试题。
每一次访问这个页面的时候 先检测SESSION里是否存在这个对象
如果存在 就直接从这个对象里把题取出来。
如果没有 再重新生成试题 并把它存到SESSION里
------解决方案--------------------
这个是你随机出题的问题,你当然不能在页面使用随机函数出题,应该在后台随机出来传递页面的时候也就是固定的题目了
------解决方案--------------------
客户端编程是不安全的
------解决方案--------------------
我觉得是一样情愿吧,如果我多打开几个浏览器呢
应该只有注册了账户了的,并且登陆之后才能查看,并且一个账户只能在一个地方登陆(就像QQ只能同时在一个地方登陆),然后按照5楼说的设一个session
------解决方案--------------------
很明显要解决这个问题不能考虑如何中在客户端中解决,而应该考虑在服务端加以控制.
比如,一个考生a,考题有100,可以新建一个string[] ,比如a做第10题,那么string[9]中就存入题目的序号.刷新页面时,根据题号9,找到string[9],判断是不是为空,如果不是空,则取出string[9]对应的题目,这样无论怎么刷新都是第一次的题目.

------解决方案--------------------
数据库设计问题,最好把数据库设计好,对于这样子的问题,不必要,也不能考虑到前台部分.
设计部分:要考虑到一个用户名,只能一次进行考试系统.当一个帐户已经使用时,不可再用些用户登录到系统.
二:当用户某一个帐号进入到系统,要把用户的相应信息存储起来,并把试题号存储起来,做算分处理啊,..
这些都是基本问题.要首先考虑....
------解决方案--------------------
1.把不让刷新的那个页面的数据保留在SESSION变量里了
2.数据库另加一张表,当用户登录后随机选择一道题目后,就存入这张表,这样用户跟试题对应起来,以后就一直是这份试题.
------解决方案--------------------
第一次生成界面时在SESSION里放个session值,下次访问判断session为不为null
在判断是取值还是返回原JSP,时间可是在第一次访问把时间放在session里,在刷新取当前时间相减
可能有误差,别的方法我不会