文章作者 : 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的应用程序框架.
|