我正在使用我的公司以前在使用框架的网站上使用的非常旧的登录系统。以前,当有人尝试错误的用户/密码组合时,框架会加载一个简单的 cfinclude 文件,其中包含登录表单和顶部的错误消息。现在我在一个调用 application.cfc 的弹出窗口中使用了一个表单,但是页面并没有在我的弹出窗口中返回错误消息,而是将 cfinclude 文件从应用程序组件加载到一个新页面。
所以我需要为这个应用程序做一些事情。首先,我需要初始弹出窗口保持不变,如果用户/密码的组合错误,页面不应该提交,最后我需要错误消息出现在弹出窗口的某个位置。
如果有人在我之前做过这样的事情,我将非常感谢您的反馈。
这是我的代码的一部分:
登录表格:
<!--- loginErrMsg display - to tell why login is denied --->
<cfif isdefined("loginErrMsg")><span style="color:red">#loginErrMsg#</span><br /></cfif>
<form name="LoginForm" id="LoginForm" action="<cfif test is false>https://secure.example.com</cfif>#loginFormAction#" method="post" target="_top">
</cfoutput>
<input type="hidden" name="loginPost" value="true">
<p>
Login below to take advantage of the great services we offer:
</p>
E-mail:<input name="j_username" class="loginform" type="text" size="30" maxlength="50" id="j_username">
Password: <input name="j_password" type="password" size="30" maxlength="16" class="loginform">
<br />
<input type="submit" name="btn" value="Submit" class="bluebuttonnormal">
</form>
应用程序.cfc 代码:
<cflogin applicationtoken="swmadmin">
<cfif NOT IsDefined("cflogin")>
<cfinclude template="login.cfm">
<cfabort>
<cfelse>
<cfquery name="userlookup" datasource="#ds#">
SELECT clientadminID, roles, isFaxOnly, acctEnabled FROM clientadmin
WHERE
username=<cfqueryparam value="#cflogin.name#" CFSQLTYPE="CF_SQL_VARCHAR" maxlength="50">
and password=<cfqueryparam value="#cflogin.password#" CFSQLTYPE="CF_SQL_VARCHAR" maxlength="16">
</cfquery>
<cfif userlookup.recordcount eq 0>
<cfset loginErrMsg = "Invalid login.">
<cfinclude template="login.cfm">
<cfabort>
</cflogin>