フレームを使用する Web サイトで、会社が以前使用していた非常に古いログイン システムを使用しています。以前は、誰かが間違ったユーザー/パスの組み合わせを試みた場合、フレームは、ログイン フォームとその上にエラー メッセージを含む単純な 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>
Application.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>