我自己有一个想法,不知道好不好。我在客户端每隔一段时间运行一段PHP代码(用JS),这段PHP代码记录了测试的当前时间,然后用这个时间与初始登陆时间比较,如果到了时间则提交相关<form>中的内容。
不知道这种方法是否是唯一的办法。请大侠赐教良方!!谢谢,解决后立即结贴!!!只提供思路也可以!!

解决方案 »

  1.   

    PHP有没有类似js中的settimeout(……,……)的方法?有时候您的一句发言也许能帮上大忙的,请不要顾忌,给我一点思路吧!!
      

  2.   

    我本来想用COOKIE保存用户SESSION_ID的,但是这样太依赖客户端了,如果客户端禁止COOKIE,那就没有任何办法了。fason(【阿信】) :
       你好,能给点比较好的思路吗?非常感谢!!
      

  3.   

    网页的提交是客户端的行为,所以定时提交用js的settimeout就可以了。
    至于你要防止有人刷新就重新计时,你可以在服务器端检查用户是否已经访问过,与上次访问
    的时间比较是否已经超时。比如刚登陆的时候,设置时间变量$_SESSION["time"].访问该页面的时候检查是否访问过,如果访问过,$_SESSION["time"]+=curtime-lasttime;
    没有访问过初始化为0。最后检查$_SESSION["time"]是否超时。不知道我这样行的通吗?你可以试试看。
      

  4.   

    session id不是问题,可以放在网址后面传递的。或者你自己定义一个id,例如:abc.php?myid=aalk34lkjaldkf23lkjah23jalkd
      

  5.   

    谢谢Meteorlet(Meteorlet)
        你的方法比我的方法好多了。我会自己考虑一下的,谢谢你的指点,我看看有没有其他的朋友还有别的方法,同时自己也试一下。我也想过用禁止刷新的功能,没能实现,你这种方法应该可行。谢谢。明天结贴,请等候接分!
        
        各位大侠有别的方法,不管是不是更好,不妨指点一二。分数可以加。
      

  6.   

    我用SESSION_ID是准备在客户端保存永久性SESSION的(利用SETCOOKIE),不过这样就比较依赖客户端了。所以这种方法我放弃了。我想尽量不用COOKIE。abc.php?myid=aalk34lkjaldkf23lkjah23jalkd 如果可以这样传递,那我倒想起一个方法,可以将SESSION的信息保存倒服务器端,不知可否,请评阅:    $fd = fopen("FileName","w");
        $fwrite($fd,"$SESSION_ID");
    以后读出来(用fread)将session_id取出赋值给$mynewid,是否session就算是永久保存了呢?
      

  7.   

    你可能不太了解session的原理,session是通过session_id来区分每一个客户端,而有关的信息都是保存在服务器端的。如果不支持cookie,session.use_only_cookies = 0 服务器会自动把PHPSESSID=1lkadflkjlsdafwerorisdflkiblkrkj45 附到最后的。
    服务器收到PHPSESSID会新建文件/tmp/sess_1lkadflkjlsdafwerorisdflkiblkrkj45 所有的session信息都保存在这个文件里。一旦用户超时会自动删了这个文件的。你如果觉得安全性不好可以自己模仿这个过程写。或者把session_id放在数据库里方便查询,或者永久保存。
      

  8.   

    你可以用个js来实现的。当用户打开这个测试页面时开始计时,当到时间后用自动提交用个js脚本自动提交。。回头我给你写个这样的代码,现在有点忙。。
      

  9.   

    <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
      

  10.   

    呵呵,我也想要有数据库啊,现在我做的一切都是用自己做的文本数据库,痛苦啊,好怀念以前有数据库的时候啊……to SonMeiKa(蒹葭):
        我现在要做的是只要用户登陆,就要控制他/她在线时间。而不是两次登陆的时间差thanks
    to zerowu(ZERO) :
        我现在做的这个我觉得非常浪费服务器资源,希望你能有好的建议thanks
    to others:
        be more advices!thanks!
      

  11.   

    我首先想到用SESSION,但用SESSION一个用户打开两个窗口,好像是一个SESSION的。
    那就在页面进入时判断一次不让用户打开两个窗口,用SESSION应该没有问题。