2012-01-23 44 views
0

存儲形式值我有我的會話試圖捕獲這些表單值:從形式在會話中的ColdFusion

prop_zip 
prop_st 
address 
city 
fname 
lname 
email 
pri_phone_1 
pri_phone_2 
pri_phone_3 

這裏是我的會話代碼:

<cfapplication name="qsErrorVals" clientmanagement="yes" sessionmanagement="yes" sessiontimeout="#createTimeSpan(0,0,360,0)#"> 
<cflock timeout="120" name="#session.sessionID#" type="exclusive"> 
    <cfset session.prop_st="#prop_st#"> 
    <cfset session.prop_zip="#prop_zip#"> 
    <cfset session.address="#address#"> 
    <cfset session.fname="#fname#"> 
    <cfset session.lname="#lname#"> 
    <cfset session.email="#email#"> 
    <cfset session.pri_phone_1="#pri_phone_1#"> 
    <cfset session.pri_phone_2="#pri_phone_2#"> 
    <cfset session.pri_phone_3="#pri_phone_3#"> 
</cflock> 

到目前爲止,我只能保存表格中的兩個變量:

prop_zip 
prop_st 

剩下的我在將表單值保存到會話時遇到了問題。我定義我想在會話存儲創建會話之前的變數,我已經使用這個代碼的嘗試:

<cfset session.email="#form.email#"> 
etc... 

不過我只能救我提到的兩個變量。我究竟做錯了什麼?

回答

2

如果不查看所有代碼,就很難回答,但希望這個例子能夠幫助。

  • cfapplication標記應該放在Application.cfm或Application.cfc文件中。
  • 會話代碼應該很可能放在另一個文件中。
  • 我建議在cflock標記中指定一個scope屬性session

Application.cfm文件:

<cfapplication name="qsErrorVals" clientmanagement="yes" sessionmanagement="yes" sessiontimeout="#createTimeSpan(0,0,360,0)#"> 

ErrorVals.cfm或任何你要調用的文件:

<cfparam name="form.prop_st" default="NY" > <!--- I've added default data for testing ---> 
<cfparam name="form.prop_zip" default="12345" > 
<cfparam name="form.address" default="1st Main St." > 
<cfparam name="form.fname" default="John" > 
<cfparam name="form.lname" default="Doe" > 
<cfparam name="form.email" default="[email protected]" > 
<cfparam name="form.pri_phone_1" default="123-123-1234" > 
<cfparam name="form.pri_phone_2" default="123-123-1234" > 
<cfparam name="form.pri_phone_3" default="123-123-1234" > 
<cfscript> 
    prop_st = trim(form.prop_st); // validate, trim, etc. 
    prop_zip = trim(form.prop_zip); 
    address = trim(form.address); 
    fname = trim(form.fname); 
    lname = trim(form.lname); 
    email = trim(form.email); 
    pri_phone_1 = trim(form.pri_phone_1); 
    pri_phone_2 = trim(form.pri_phone_2); 
    pri_phone_3 = trim(form.pri_phone_3); 
</cfscript> 

<cflock scope="session" type="exclusive" timeout="10" > 
    <cfset session.prop_st = prop_st> 
    <cfset session.prop_zip = prop_zip> 
    <cfset session.address= address> 
    <cfset session.fname= fname> 
    <cfset session.lname= lname> 
    <cfset session.email= email> 
    <cfset session.pri_phone_1= pri_phone_1> 
    <cfset session.pri_phone_2= pri_phone_2> 
    <cfset session.pri_phone_3= pri_phone_3> 
</cflock> 

<cfdump var="#session#"> 
4

嗯,我通常採取討巧。除了關於cfapplication的建議,範圍和範圍形式變量Micah's answer,我會將整個表單結構複製到會話中。

session.theForm = structCopy(form);