;中国 COLD FUSION 用户组; WWW.CFWINDOW.COM 
您的位置 :首页 >> CF 技巧文章 >> 阅读文章内容 [ 关闭窗口 ]      

技巧文章内容 
    做一个功能完备的登录系统(连载5/6)-----捕捉目前用户在线信息: application.cfm
文章作者 : linkfoxo [ webmaster@cfwindow.com ]          Web URL : http://www.cfwindow.com
上载日期 : 2001-01-09

第四节: 捕捉目前用户在线信息: application.cfm.

application.cfm :
  
  <CFAPPLICATION
      Name="MyApplication"
      SESSIONMANAGEMENT="Yes"
      SESSIONTIMEOUT="#CreateTimeSpan(0,0,45,0)#"
      APPLICATIONTIMEOUT="#CreateTimeSpan(0,0,45,0)#">

  <CFPARAM name="session.LoggedIn" DEFAULT="FALSE">

  <!-- 定义多长时间算是超时,我们这里定义45分钟 -->
  <CFSET AppTimeSpan = #CreateTimeSpan(0,0,45,0)#>


  <!-- 如果用户没有login -->
  <CFIF #session.LoggedIn# IS "FALSE">
  
    <!-- ... 而且也不在登陆页面, 和找回丢失密码的页面. -->
    <CFIF (CGI.SCRIPT_NAME IS NOT "/test/login.cfm")
      AND (CGI.SCRIPT_NAME IS NOT "/test/results.cfm")
      AND (CGI.SCRIPT_NAME IS NOT "/test/forgotpass.cfm")>  
        <SCRIPT LANGUAGE="JavaScript">
        alert("The system has detected an invalid login
               or your session on this machine has timed out.
               You will be prompted for your login/password again.");
        self.location.href='login.cfm';
        </SCRIPT>
    </CFIF>

  <CFELSE>
    
    <!-- this will reset the time stamp every time the user accesses a non-login related page,
         to keep track of his activity.  -->
    <CFIF (CGI.SCRIPT_NAME IS NOT "/test/login.cfm")
         AND (CGI.SCRIPT_NAME IS NOT "/test/results.cfm")
         AND (CGI.SCRIPT_NAME IS NOT "/test/forgotpass.cfm")>  
        <CFSET Application.UsersLoggedin["#Session.UserID#"].TimeCreated = Now()>
    </CFIF>

  </CFIF>



Page1.cfm  :  显示谁在线?

  <HTML>
  <HEAD>
     <TITLE>My Application Page one</TITLE>

  <!-- 很重要,防止cache..cfheaders anti cache-->
  <CFHEADER NAME="Expires" VALUE="Mon, 06 Jan 1990 00:00:01 GMT">
  <CFHEADER NAME="Pragma" VALUE="no-cache">
  <CFHEADER NAME="cache-control" VALUE="no-cache">

  <!-- 和上面的一起使用, 一个管服务器, 一个管浏览器.-->
  <META HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
  <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
  
  </HEAD>

  <BODY>

  <H2>Welcome to page one!</H2>

  <BR>

  If you can see this file, it means you are logged in. <A HREF="logout.cfm">LOGOUT</A>

  <BR><BR>

  <FONT SIZE="2">

  <B>Application Variables output:</B> <BR><BR>
  <CFLOOP COLLECTION=#application.UsersLoggedin# ITEM="counter">
  <CFOUTPUT>
  <I>Session variables as recorded in the application structure for UserID #counter#</I><BR>
  </CFOUTPUT>
  <UL>
    <CFLOOP COLLECTION=#application.UsersLoggedin[counter]# ITEM="counter2">
         <CFOUTPUT>
        <LI>#counter2# (Value - #application.UsersLoggedin[counter][counter2]#)
         </CFOUTPUT>
    </CFLOOP>
  </UL>

    <BLOCKQUOTE>
    <CFOUTPUT>
    Created at: #DateFormat("#application.UsersLoggedin[counter].TimeCreated#")#
                #TimeFormat("#application.UsersLoggedin[counter].TimeCreated#")#<BR>
    <CFSET EndTime = #application.UsersLoggedin[counter].TimeCreated# + #AppTimeSpan#>
    Will end at: #DateFormat("#EndTime#")#  #TimeFormat("#EndTime#")#<BR>
    That is: #DateDiff("n", "#Now()#", "#EndTime#")# minutes from now
    </CFOUTPUT>
    </BLOCKQUOTE>

  </CFLOOP>

  <BR><BR>

  <B>Current User session Variables output:</B> <BR><BR>

  <BLOCKQUOTE>

  <CFLOOP COLLECTION=#session# ITEM="counter">
     <CFOUTPUT>
       #counter# (Value - #session[counter]#)<BR>
     </CFOUTPUT>
  </CFLOOP>

  <BR>
  <CFOUTPUT>
    Created at: #DateFormat("#session.TimeCreated#")#
                #TimeFormat("#session.TimeCreated#")#<BR>
    <CFSET EndTime = #session.TimeCreated# + #AppTimeSpan#>
    Will end at: #DateFormat("#EndTime#")#  #TimeFormat("#EndTime#")#<BR>
    That is: #DateDiff("n", "#Now()#", "#EndTime#")# minutes from now
  </CFOUTPUT>

  </BLOCKQUOTE>


  <BR>

  </FONT>


  </BODY>
  </HTML>

多找几个机器测试测试, 不要在一台机器上, 因为cfid的原因, 你很难测试超时的功能.


待续....: Logout.cfm 和总结







< 联系我们 --- 中国Cold Fusion用户组>

CFUG 国内(总部):Linkfoxo    上海:CFANS    北京:Cafe,Cyberkid,liwater    沈阳:Wangking
  
哈尔滨:Baiming    浙江:梅盛松    江西:陈末
  
CFUG (国际) Nagoya(名古屋):Codeguru    新加坡:YUZI    新西兰(Auckland):Richard CHEN
Copyright 2000-2001 www.cfwindow.com.All rights reserved

;中国 COLD FUSION 用户组; WWW.CFWINDOW.COM