2011-01-07 74 views
0

我使用Dreamweaver CS5和Coldfusion 9构建动态网站。我有一个存储登录信息的MS Access数据库,其中包括ID,FullName,FirstName,LastName,Username,Pawword,AcessLevels。更改会话变量输出

我的问题是这样的: 我目前有会话变量来跟踪登录页面中输入的用户名。不过,我想使用该用户名来拉取用户的全名,以便在整个网页上显示并用于查询数据。如何更改会话变量,以便在没有在登录页面输入FullName时输入用户名和密码。

如果有任何需要的附加信息,请在下面列出我的登录信息代码,请让我知道。

这是FullName值驻留在DataSource“Access”表中的路径“Logininfo”字段“FullName”我希望FullName根据从Login页面提交的用户名是唯一的。

对于我可能造成的任何新秀错误,我提前表示道歉,我对此很陌生,但学得很快!哈。

<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

您在Adobe Dreamweaver应用程序开发论坛上提出了同样的问题,并在@Danilo Celic花了两个小时才回答问题。你应该已经解决了你的问题,以避免浪费时间来帮助你。 – 2011-01-08 00:14:31

回答

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可用。