我正在使用Dreamweaver CS5和Coldfusion 9来构建动态网站。我有一个MS Access数据库,存储登录信息,包括ID,FullName,FirstName,LastName,Username,Pawword,AcessLevels。
我的问题是: 我目前有会话变量来跟踪用户名进入登录页面时。但是,我想使用该用户名来提取用户的FullName以在整个网页中显示并用于查询数据。如何更改会话变量,以便在他们未在登录页面上输入FullName但仅输入用户名和密码时进行读取。
如果需要任何其他信息,请在下面列出我的登录信息代码,请告知我们。
这是FullName值驻留的路径DataSource“Access”表“Logininfo”字段“FullName”我希望FullName基于从“登录”页面提交的用户名是唯一的。
我提前为任何新手的错误道歉,我可能会让我对此感到陌生,但学得很快!哈
<cfif IsDefined("FORM.username")>
<cfset MM_redirectLoginSuccess="members_page.cfm">
<cfset MM_redirectLoginFailed="sorry.cfm">
<cfquery name="MM_rsUser" datasource="Access">
SELECT FullName, Username,Password,AccessLevels FROM Logininfo WHERE Username=<cfqueryparam value="#FORM.username#" cfsqltype="cf_sql_clob" maxlength="50"> AND Password=<cfqueryparam value="#FORM.password#" cfsqltype="cf_sql_clob" maxlength="50">
</cfquery>
<cfif MM_rsUser.RecordCount NEQ 0>
<cftry>
<cflock scope="Session" timeout="30" type="Exclusive">
<cfset Session.MM_Username=FORM.username>
<cfset Session.MM_UserAuthorization=MM_rsUser.AccessLevels[1]>
</cflock>
<cfif IsDefined("URL.accessdenied") AND false>
<cfset MM_redirectLoginSuccess=URL.accessdenied>
</cfif>
<cflocation url="#MM_redirectLoginSuccess#" addtoken="no">
<cfcatch type="Lock">
<!--- code for handling timeout of cflock --->
</cfcatch>
</cftry>
</cfif>
<cflocation url="#MM_redirectLoginFailed#" addtoken="no">
<cfelse>
<cfset MM_LoginAction=CGI.SCRIPT_NAME>
<cfif CGI.QUERY_STRING NEQ "">
<cfset MM_LoginAction=MM_LoginAction & "?" & XMLFormat(CGI.QUERY_STRING)>
</cfif>
</cfif>
答案 0 :(得分:0)
我看起来查询已经在拉FullName,所以如果你想要一个包含FullName值的会话变量。
你有这个代码:
将其更改为以下内容(应该在一段时间内没有起诉CF,所以基于内存,未经测试)
<cflock scope="Session" timeout="30" type="Exclusive">
<cfset Session.MM_Username=FORM.username>
<cfset Session.MM_UserAuthorization=MM_rsUser.AccessLevels[1]>
<cfset Session.FullName=MM_rsUser.FullName[1]>
</cflock>
这将添加Session.FullName,您可以在您网站的其他位置引用它。它应该出现在用户登录后的任何页面上,因此在使用该值之前,您必须检查它是否存在于不需要登录的页面上。
请注意:您使用的代码是由Dreamweaver登录服务器行为自动生成的,而且我建议的更改很可能会破坏对该服务器行为的检查或重新应用。如果发生这种情况,那么您可以通过删除添加的代码行并在进行任何更改后重新添加代码来恢复。您可能需要确保FullName位于查询SELECT语句中,以确保FullName可用。