可以这样:
进入页面时记录时间t1,然后离开页面时记录时间t2,然后用xmlhttp将差值提交给asp页面插入数据库
这样之访问一次服务端,其余的都在客户端完成

解决方案 »

  1.   

    如果用户网络故障断开连接,一直没有离开页面?
    还是要用到JavaScript,循环几秒执行代码。当不执行了时间就不累计了,这样即时返回用户在线停留时间给用户的感觉会体贴。
      

  2.   

    那你可以在session_start,session_end中处理这个问题
      

  3.   

    不知道这段代码能否对你有帮助,只是没有隔几秒提交累计到数据库中。
    “如果用户网络故障断开连接,一直没有离开页面?
    还是要用到JavaScript,循环几秒执行代码。当不执行了时间就不累计了,这样即时返回用户在线停留时间给用户的感觉会体贴。”
    <html>
    <head>
    <script language="javascript">
    <!--
    var clock=new Date();
    var startTime=clock.getTime();
    function showTime()
    {
    var leaveTime=new Date();
    var totalTime=((leaveTime.getTime()-startTime)/1000); //total time in seconds
    var hTimerLast=Math.floor(totalTime/3600);      //check hours
    var mTimerLast=Math.floor((totalTime%3600)/60); //check minutes
    var sTimerLast=Math.floor(totalTime%60);        //check seconds 
    alert("You had been at the site for: "+hTimerLast+" Hours "+mTimerLast+" Minutes "+sTimerLast+
    " Seconds .");
    }
    //-->
    </script>
    </head>
    <body onunload="showTime()">
    </body>
    </html>
      

  4.   

    <Script language="JavaScript">
    function GetResult()
    {
        var oBao = new ActiveXObject("Microsoft.XMLHTTP");
        oBao.open("POST","Server.asp",false);
        oBao.send();
        var strResult = unescape(oBao.responseText);
        RemoveRow();
        row = tb.insertRow();
        cell = row.insertCell();
        cell.innerText = strResult;
    }
    function RemoveRow()
    {
        //保留第一行表头,其余数据均删除.
        var iRows = tb.rows.length;
        for(var i=0;i<iRows-1;i++)
        {
            tb.deleteRow(1);
        }
    }
    function MyShow(){timer = window.setInterval("GetResult()",1000);}
    </Script><body onload="MyShow()">
    <p>
    </p>
    <table width="47%" height="23"  border="0" cellpadding="1" cellspacing="0" id="tb">
      <tr>
        <td></td>
      </tr>
    </table>
    ----------------------------------------------Server.asp
    <%
    IF Session("LoginTime")<>"" Then
    Session("LoginTime")=Session("LoginTime")+1
    Else
    Session("LoginTime")=0
    End IF
    IF Session("LoginTime")<60 Then
    tempStr=Session("LoginTime")&"秒"
    Else
    tempStr=Session("LoginTime")&"秒"
    End IF
    sResult = tempStr
    Response.Write(escape(sResult))
    %>