<CFSET SESSION.LOGGEDIN = FALSE>
<!--- query server --->
<CFQUERY NAME="CheckUser" datasource="project03">
SELECT username, password
FROM member
WHERE username = '#form.username#'
</CFQUERY>
<!--- end query --->
<CFIF CHECKUSER.RECORDCOUNT GREATER THAN 0>
<CFIF CHECKUSER.PASSWORD IS FORM.PASSWORD>
<CFIF #ISDEFINED("application.UsersLoggedin")# IS FALSE>
<CFSET APPLICATION.USERSLOGGEDIN=STRUCTNEW()>
</CFIF>
<CFSET usernameATDOOR = CHECKUSER.username>
<CFIF #STRUCTKEYEXISTS(APPLICATION.USERSLOGGEDIN, usernameATDOOR)# IS TRUE>
<CFSET ENDTIME = #APPLICATION.USERSLOGGEDIN[usernameATDOOR].TIMECREATED# + #APPTIMESPAN#>
<CFIF #DATECOMPARE("#Now()#", "#EndTime#")# IS 1>
<CFOUTPUT>
<CFSCRIPT>
StructDelete(application.UsersLoggedin, #CheckUser.username#, true);
</CFSCRIPT>
</CFOUTPUT>
<CFSET SESSION.LOGGEDIN = TRUE>
<CFSET SESSION.username = CHECKUSER.username>
<CFSET APPLICATION.USERSLOGGEDIN["#session.username#"] = SESSION>
<CFSET APPLICATION.USERSLOGGEDIN["#Session.username#"].TIMECREATED = NOW()>
<CFELSE>
<CFOUTPUT>
<CFIF #DATEDIFF("n", "#Now()#", "#EndTime#")# LT 1>
<CFSET MINUTESLEFT = 'LESS THAN ONE'>
<CFELSE>
<CFSET MINUTESLEFT = #DATEDIFF("n", "#Now()#", "#EndTime#")#>
</CFIF>
<CFSET REASON = ": \n\n1- User #CheckUser.username# is already logged-in.\n2- OR you have terminated your last session abnormaly (e.g. your computer crashed).\n\nThis account will be unlocked in: #MinutesLeft# minute(s) from now.\n\nTo obtain more licenses, please contact our sales team.">
</CFOUTPUT>
</CFIF>
<CFELSE>
<CFSET SESSION.LOGGEDIN = TRUE>
<CFSET SESSION.username = CHECKUSER.username>
<CFSET APPLICATION.USERSLOGGEDIN["#session.username#"] = SESSION>
<CFSET APPLICATION.USERSLOGGEDIN["#Session.username#"].TIMECREATED = NOW()>
</CFIF>
<CFELSE>
<CFSET REASON = 'Password Invalid. Try again'>
</CFIF>
<CFELSE>
<CFOUTPUT>
<CFSET REASON = 'No Such User: #FORM.username#'>
</CFOUTPUT>
</CFIF>
<CFIF SESSION.LOGGEDIN>
<SCRIPT LANGUAGE="JavaScript">
self.location ='members.cfm';
</SCRIPT>
<CFELSE>
<CFOUTPUT>
<SCRIPT>
alert("OOPS! \n\n#Reason#");
self.location="login.cfm";
</SCRIPT>
</CFOUTPUT>
</CFIF>