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

技巧文章内容 
    做一个功能完备的登录系统(连载2/6)-----使用应用程序框架
文章作者 : linkfoxo [ webmaster@cfwindow.com ]          Web URL : http://www.cfwindow.com
上载日期 : 2001-01-04

第二节: 使用应用程序框架

在上一节中我们只是做了一个简单的框架.  如果我们要求限制只有登录的用户才可以使用某些页面.
所以我们要使用session变量和application.cfm建立应用程序框架了.

当用户成功登陆后, 我们建立一个SESSION变量.

'Session.LoggedIn = True'.

我们的application.cfm像一个严格的守护者一样. 在用户的每一个页面的开始要检查这个变是是不是
为true. 如果是可以继续执行. 如果不是则返回到最初登陆的界面.


让我们看看原代码:

login.cfm:

  <CFSET Session.LoggedIn = FALSE>
  
  <CFQUERY name="CheckUser" datasource="Database">
     SELECT UserID, Password
     FROM passwords
     WHERE UserID = '#Form.UserID#'
  </CFQUERY>
  
  <!-- is the username present in the database? -->
  <CFIF CheckUser.RecordCount GREATER THAN 0>
    <!--- Passwords are not case-sensitive in this application (use compare() to check case) --->
    <CFIF CheckUser.PassWord IS Form.PassWord>
        <CFSET Session.LoggedIn = TRUE>
        <CFSET Session.UserID = CheckUser.UserID>
    <CFELSE>
    <CFSET Reason = "the password you\'ve typed is invalid. Try again">
    </CFIF>
  <CFELSE>
  <CFOUTPUT>
  <CFSET Reason = 'I could not find a user named #Form.UserID# here.'>
  </CFOUTPUT>
  </CFIF>
  

  <CFIF Session.LoggedIn>
    <!-- If the user is logged in we transfer him/her to the homepage -->
    <SCRIPT LANGUAGE="JavaScript">
    self.location ='page1.cfm';
    </SCRIPT>
  
  <CFELSE>
    <CFOUTPUT>
    <SCRIPT>
    alert("Sorry!  Your login was unsuccessful because #Reason#");
    self.location="login.cfm";
    </SCRIPT>
    </CFOUTPUT>
  
  </CFIF>


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">

  <!-- If the user is not yet logged in, and not currently on the login pages,
        or the forgotten password page, -->
  <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.
               You will be prompted for your login/password again.");
        self.location='login.cfm';
        </SCRIPT>
    </CFIF>
  <CFELSE>
  </CFIF>

我们使用CGI.SCRIPT_NAME这个cgi变量来判断用户是不是已经在登陆页面.

page1.cfm:

  <HTML>
  <HEAD>
    <TITLE>Test Page.</TITLE>
  </HEAD>
  
  <BODY>
  
  <H2>Welcome to page one!</H2>

  <BR><BR>
  
  If you can see this file, it means you are logged in.

  </BODY>
  </HTML>

祝贺你, 你已经完成了一个基于application.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