[求教]商品倒计时器的问题,读取服务器时间后进行运算
不用每次都取服务器时间啊。你就在打开页面的时候取一下时间,计算一下倒计时间就行了,然后做个JavaScript计时器就行了。倒计时代码。
var time_now_server,time_now_client,time_end,time_server_client,timerID;
time_end=new Date("Jan 20, 2002 00:00:00");
time_end=time_endgetTime();
time_now_server=new Date("Dec 21, 2001 13:11:1");
time_now_server=time_now_servergetTime();
time_now_client=new Date();
time_now_client=time_now_clientgetTime();
time_server_client=time_now_server-time_now_client;
setTimeout("show_time()",1000);
function show_time()
{
timerinnerHTML =time_server_client;
var time_now,time_distance,str_time;
var int_day,int_hour,int_minute,int_second;
var time_now=new Date();
time_now=time_nowgetTime()+time_server_client;
time_distance=time_end-time_now;
if(time_distance>0)
{
int_day=Mathfloor(time_distance/86400000)
time_distance-=int_day86400000;
int_hour=Mathfloor(time_distance/3600000)
time_distance-=int_hour3600000;
int_minute=Mathfloor(time_distance/60000)
time_distance-=int_minute60000;
int_second=Mathfloor(time_distance/1000)
if(int_hour<10)
int_hour="0"+int_hour;
if(int_minute<10)
int_minute="0"+int_minute;
if(int_second<10)
int_second="0"+int_second;
str_time="<font style='font-size:14pt;color:#28C84A'>"+int_day+"</font><font face='黑体' style='font-size:13pt;'>天</font><br>"+int_hour+":"+int_minute+":"+int_second;
timerinnerHTML=str_time;
setTimeout("show_time()",1000);
}
else
{
timerinnerHTML ="over";
clearTimeout(timerID)
}
}
1用js的setinterval()来设一定倒计时,倒计时的初始值由php分配过来;
2为了防止别人自己调试js,修改时间,每10秒钟或更小用ajax检测一下服务器,统一次差值,这样就和服务器同步了。
3在服务器每份试卷或每个人都是唯一的,只要开始启用,到时自动过期,保存存一个“提交失败”。
如果同时答题的人数不是很巨大,直接存session里面,访问量高的话存在数据库里面。
4当倒计时为0时自动提交到服务器,服务器设一个容错时间,大概1分钟左右,即网络传输过程中超过1分钟就会提交失败。
5在这考试期间,无论怎么刷新都是那一套题目,提交成功后就不能断续做题;提交失败后重新分配另一套题;重新开始计算时间;
6避免题目重复,当提交失败3次后,就不能再次做题了。
虽然这样做了,也只能防止菜鸟作弊!
代码自己写。。
这个
后台
代码
应该是ASPNET开发的
页面
的C#代码,
可以直接放在aspx页面的<script
runat="server"></script>
区块
内;
在cs代码与aspx代码分离的情况下,
这个后台代码应该放在c#代码页面内
倒计时可以用js的setTimeout来控制
http://wwwtocuscomcn/send=article_show&id=34&class=2
可以循环计时,而对于页面刷新,我们可以屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键来达到效果
<script>
//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键
function documentoncontextmenu(){eventreturnValue=false;}//屏蔽鼠标右键
function windowonhelp(){return false} //屏蔽F1帮助
function documentonkeydown(){
if((windoweventaltKey)&&((windoweventkeyCode==37)||(windoweventkeyCode==39))){
//屏蔽Alt+方向键←
//屏蔽Alt+方向键→
eventreturnValue=false;
}
if((eventkeyCode==8)||(eventkeyCode==116)||(eventctrlKey && eventkeyCode==82)){
//屏蔽退格删除键
//屏蔽F5刷新键
//Ctrl+R
eventkeyCode=0;
eventreturnValue=false;
}
if(eventkeyCode==122){eventkeyCode=0;eventreturnValue=false;} //屏蔽F11
if(eventctrlKey && eventkeyCode==78)eventreturnValue=false; //屏蔽Ctrl+n
if(eventshiftKey && eventkeyCode==121)eventreturnValue=false; //屏蔽shift+F10
if(windoweventsrcElementtagName=="A" && windoweventshiftKey)
windoweventreturnValue=false; //屏蔽shift加鼠标左键新开一网页
if((windoweventaltKey)&&(windoweventkeyCode==115)){ //屏蔽Alt+F4
windowshowModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px");
return false;
}
}
</script>
0条评论