制作一个时间到了自动提交的程序(在线考试系统)!希望各位大侠帮我!急!!!! 我自己有一个想法,不知道好不好。我在客户端每隔一段时间运行一段PHP代码(用JS),这段PHP代码记录了测试的当前时间,然后用这个时间与初始登陆时间比较,如果到了时间则提交相关<form>中的内容。不知道这种方法是否是唯一的办法。请大侠赐教良方!!谢谢,解决后立即结贴!!!只提供思路也可以!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PHP有没有类似js中的settimeout(……,……)的方法?有时候您的一句发言也许能帮上大忙的,请不要顾忌,给我一点思路吧!! 我本来想用COOKIE保存用户SESSION_ID的,但是这样太依赖客户端了,如果客户端禁止COOKIE,那就没有任何办法了。fason(【阿信】) : 你好,能给点比较好的思路吗?非常感谢!! 网页的提交是客户端的行为,所以定时提交用js的settimeout就可以了。至于你要防止有人刷新就重新计时,你可以在服务器端检查用户是否已经访问过,与上次访问的时间比较是否已经超时。比如刚登陆的时候,设置时间变量$_SESSION["time"].访问该页面的时候检查是否访问过,如果访问过,$_SESSION["time"]+=curtime-lasttime;没有访问过初始化为0。最后检查$_SESSION["time"]是否超时。不知道我这样行的通吗?你可以试试看。 session id不是问题,可以放在网址后面传递的。或者你自己定义一个id,例如:abc.php?myid=aalk34lkjaldkf23lkjah23jalkd 谢谢Meteorlet(Meteorlet) 你的方法比我的方法好多了。我会自己考虑一下的,谢谢你的指点,我看看有没有其他的朋友还有别的方法,同时自己也试一下。我也想过用禁止刷新的功能,没能实现,你这种方法应该可行。谢谢。明天结贴,请等候接分! 各位大侠有别的方法,不管是不是更好,不妨指点一二。分数可以加。 我用SESSION_ID是准备在客户端保存永久性SESSION的(利用SETCOOKIE),不过这样就比较依赖客户端了。所以这种方法我放弃了。我想尽量不用COOKIE。abc.php?myid=aalk34lkjaldkf23lkjah23jalkd 如果可以这样传递,那我倒想起一个方法,可以将SESSION的信息保存倒服务器端,不知可否,请评阅: $fd = fopen("FileName","w"); $fwrite($fd,"$SESSION_ID");以后读出来(用fread)将session_id取出赋值给$mynewid,是否session就算是永久保存了呢? 你可能不太了解session的原理,session是通过session_id来区分每一个客户端,而有关的信息都是保存在服务器端的。如果不支持cookie,session.use_only_cookies = 0 服务器会自动把PHPSESSID=1lkadflkjlsdafwerorisdflkiblkrkj45 附到最后的。服务器收到PHPSESSID会新建文件/tmp/sess_1lkadflkjlsdafwerorisdflkiblkrkj45 所有的session信息都保存在这个文件里。一旦用户超时会自动删了这个文件的。你如果觉得安全性不好可以自己模仿这个过程写。或者把session_id放在数据库里方便查询,或者永久保存。 你可以用个js来实现的。当用户打开这个测试页面时开始计时,当到时间后用自动提交用个js脚本自动提交。。回头我给你写个这样的代码,现在有点忙。。 <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>定时关闭窗口</title></head><body><script LANGUAGE="JavaScript"><!--setTimeout('document.testform.submit();', 60000); //60秒后关闭// --></script><FORM METHOD=POST ACTION="to_page.php" NAME="testform"> 这里是试题内容</FORM><p align="center">本页60秒后自动提交</p></body></html>这是代码,你看看,如果还有什么问题,请qq我,6809878 呵呵,我也想要有数据库啊,现在我做的一切都是用自己做的文本数据库,痛苦啊,好怀念以前有数据库的时候啊……to SonMeiKa(蒹葭): 我现在要做的是只要用户登陆,就要控制他/她在线时间。而不是两次登陆的时间差thanksto zerowu(ZERO) : 我现在做的这个我觉得非常浪费服务器资源,希望你能有好的建议thanksto others: be more advices!thanks! 我首先想到用SESSION,但用SESSION一个用户打开两个窗口,好像是一个SESSION的。那就在页面进入时判断一次不让用户打开两个窗口,用SESSION应该没有问题。 求一个mysql查询统计语句 php入门级的书 ajax+php 实现文件上传,不刷新页面 作了一个上传到服务器图片的功能,但我上传的只是gif图片。 数组的合并问题 mysql查询中文不精确怎么办? 比如='nono'会出现='洋洋'的记录. 新手请教PHP怎么循环生成字符串? (初学者)php不能接受外来的变量!!! 连数据库应该用odbc还是mssql_ simple html dom使用问题 我的问题 还没解决 高手 来帮帮忙呀 ?? session错误,大家帮我看看
你好,能给点比较好的思路吗?非常感谢!!
至于你要防止有人刷新就重新计时,你可以在服务器端检查用户是否已经访问过,与上次访问
的时间比较是否已经超时。比如刚登陆的时候,设置时间变量$_SESSION["time"].访问该页面的时候检查是否访问过,如果访问过,$_SESSION["time"]+=curtime-lasttime;
没有访问过初始化为0。最后检查$_SESSION["time"]是否超时。不知道我这样行的通吗?你可以试试看。
你的方法比我的方法好多了。我会自己考虑一下的,谢谢你的指点,我看看有没有其他的朋友还有别的方法,同时自己也试一下。我也想过用禁止刷新的功能,没能实现,你这种方法应该可行。谢谢。明天结贴,请等候接分!
各位大侠有别的方法,不管是不是更好,不妨指点一二。分数可以加。
$fwrite($fd,"$SESSION_ID");
以后读出来(用fread)将session_id取出赋值给$mynewid,是否session就算是永久保存了呢?
服务器收到PHPSESSID会新建文件/tmp/sess_1lkadflkjlsdafwerorisdflkiblkrkj45 所有的session信息都保存在这个文件里。一旦用户超时会自动删了这个文件的。你如果觉得安全性不好可以自己模仿这个过程写。或者把session_id放在数据库里方便查询,或者永久保存。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>定时关闭窗口</title>
</head><body>
<script LANGUAGE="JavaScript">
<!--
setTimeout('document.testform.submit();', 60000); //60秒后关闭
// -->
</script>
<FORM METHOD=POST ACTION="to_page.php" NAME="testform">
这里是试题内容
</FORM>
<p align="center">本页60秒后自动提交</p>
</body></html>
这是代码,你看看,如果还有什么问题,请qq我,6809878
我现在要做的是只要用户登陆,就要控制他/她在线时间。而不是两次登陆的时间差thanks
to zerowu(ZERO) :
我现在做的这个我觉得非常浪费服务器资源,希望你能有好的建议thanks
to others:
be more advices!thanks!
那就在页面进入时判断一次不让用户打开两个窗口,用SESSION应该没有问题。