我正在使用Login.cfm文件并使用followign方法登录
<cfif IsDefined("FORM.inpUserName") AND ((LCASE(TRIM(inpUserName)) IS "myusername" AND inpPassword IS "mypassword") )>
<cfset session.username = FORM.inpUserName />
<cfset SESSION.LoggedIn = 1>
<cflocation url="index.cfm" addtoken="no">
<cfelse>
<cfset SESSION.LoggedIn = 0>
</cfif>
<cfparam default="" name="inpUserName" />
<cfparam default="" name="inpPassword" />
表格定义如下:
<cfform action="Login.cfm" method="post" and so on ...
在cfform中,我定义了两个cfinput标记,用于捕获来自用户的信息,其名称属性为name =“inpUserName”,value =“#inpUserName#”
和密码字段类似。
当我点击“登录”按钮时,没有发生任何事情,请不要像我在cflocation标签顶部提到的那样转到index.cfm?
请澄清
答案 0 :(得分:1)
让我们来看看这个条件:
<cfif IsDefined("FORM.inpUserName")
AND ((LCASE(TRIM(inpUserName)) IS "myusername"
AND inpPassword IS "mypassword") )>
这正在寻找三件事情。
这意味着,只要您在提交表单时输入“myusername”和“mypassword”的值,就可以满足您的cfif条件。当你编写代码时,这可能不是你想到的。
答案 1 :(得分:0)
尝试清理一下并在整个过程中统一澄清表单变量的范围:
<cfparam name="form.inpUserName" default="" />
<cfparam name="form.inpPassword" default="" />
<cfif TRIM(form.inpUserName) IS "myusername" AND form.inpPassword IS "mypassword">
<cflock type="exclusive" scope="session" timeout="10" >
<cfset session.username = form.inpUserName />
<cfset session.LoggedIn = 1 />
</cflock>
<cflocation url="index.cfm" addtoken="no" />
<cfelse>
<cflock type="exclusive" scope="session" timeout="10" >
<cfset session.LoggedIn = false />
</cflock>
</cfif>
<cfinput type="text" name="inpUserName" value="#form.inpUserName#" />
<cfinput type="password" name="inpPassword" value="#form.inpPassword#" />
如果您要设置isDefined
vars,则不需要cfparam
功能。
现在,如果您在用户名字段中输入“myusername”,则应该转到index.cfm
页面,如果在提交时输入密码字段中的“mypassword”,则会将其发送回自身。
有关锁定会话变量的更多信息:
Should I always need to use cflock with SESSION scope variables?