2011-01-07 64 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可用。