CFBuilder admin storage
Application.cfm
34ed7586e1.jpg Login.cfm
<cfif not isDefined('FORM.submitButton')>
<cfform name="loginForm" method="post" action="#CGI.SCRIPT_NAME#">
Login:
<cfinput type="text" name="login" required="yes">
Password:
<cfinput type="password" name="password" required="yes">
<br>
<cfinput type="submit" name='submitButton' value="Sign">
<br>
<cfinput type="button" name='registerButton' value="Register">
</cfform>
<cfelse>
<cfquery name='getUser' datasource="dbfortest">
SELECT * FROM usertable WHERE login="#FORM.login#" ;
</cfquery>
<cfif getUser.RecordCount NEQ 0>
<cfif FORM.password eq getUser.password>
<cflock scope="Session" timeout="60" type="exclusive" >
<cfset Session.loggedIn = "yes">
<cfset Session.user = "#FORM.login#">
</cflock>
<cfoutput>#StructKeyList(Session)#</cfoutput>
<cfelse>
Your pass isn't correct.
</cfif>
<cfelse>
There is no user with this name.
</cfif>
</cfif>
当我想使用登录时的页面的一部分。
<cfif Session.loggedIn eq "no">
<cfinclude template="login.cfm">
</cfif>
<cfif structKeyExists(session, "user")>
<cfoutput>Welcome, #Session.user#.</cfoutput>
</cfif>
<cfoutput>#StructKeyList(Session)#</cfoutput>
大家好,请帮我理解这些会议&#39;行为。 整个问题在于尝试将变量从一个页面传递到另一个页面。 所以登录后我没有在session结构中看到session.user。 我怎么能通过这个? 已经尝试过不同的浏览器。
答案 0 :(得分:4)
在您发布的Application.cfm示例中,您有以下行:
sessiontimeout="#createTimespan(0,0,0,10)#"
CreateTimeSpan函数的参数如下:
createTimespan(days, hours, minutes, seconds)
因此,您为会话分配了10秒的生命周期。也许你打算设置10分钟而不是10秒。
答案 1 :(得分:3)
<cfdump var="#session#">
语句后立即输入一些调试代码,以确保它们正在发生。也许cflock
。<cfdump var="#session#">
您的会话范围(并且自CFMX以来不需要)。请参阅Adam when to lock scopes onRequestStart
的{{1}}中尝试Application.cfc
,并确保每个请求的JSESSIONID都相同。 (或尝试在CFADMIN中禁用J2EE会话变量,并查看CFID / CFTOKEN是否仍存在相同的问题)。session
不是Session
。虽然这种事情在功能上可能无关紧要,但在引用路径或组件时可能会让您在移植性方面遇到麻烦。其他一些问题:
loggedIn
使用布尔值,请使用布尔值:true
或false
或1
或0
或(如果你必须yes
或no
但不&#34;是&#34;这是一个字符串;如果你不得不做if (session.loggedIn)
而没有人能够做if (session.loggedIn == 'yes')
,那么就没有人能做cfqueryparam
。