ColdFusion会话变量设置不正确

ColdFusion会话变量设置不正确,coldfusion,Coldfusion,我有几个会话变量需要设置权限,只有userID、userName和sessionAdmin变量可以通过。我做了一个cfdump,看到所有变量都设置为0,这是cfparam的默认值。我也无法将页面重定向到我的示例地址 login.cfm <cfif isDefined("FORM.login")> <cfset Encryptpwd = Encrypt(FORM.password, application.PsswrdKy)> <cfset loginInfo

我有几个会话变量需要设置权限,只有userID、userName和sessionAdmin变量可以通过。我做了一个cfdump,看到所有变量都设置为0,这是cfparam的默认值。我也无法将页面重定向到我的示例地址

login.cfm

<cfif isDefined("FORM.login")>
  <cfset Encryptpwd = Encrypt(FORM.password, application.PsswrdKy)>
  <cfset loginInfo = CFCmain.getLogin(FORM.username,Encryptpwd)>
  <cflock timeout=20 scope="session" type="exclusive">
    <cfset session.UserName = loginInfo.username>
    <cfset session.userid = loginInfo.id>
    <cfset session.Access_admin = loginInfo.superadmin>
    <cfset session.Access_var1 = loginInfo.var1>
    <cfset session.Access_var2 = loginInfo.var2>
    <cfset session.Access_var3 = loginInfo.var3>
    <cfset session.Access_var4= loginInfo.var4>
    <cfset session.Access_agency = loginInfo.agency>
  </cflock>
  <cflocation url="http://www.google.com">
</cfif>
和main.cfc,其中我的变量从数据库中提取

<cffunction name= "getLogin" access="remote" returntype="any" >
  <cfargument name="uname" type="string">
  <cfargument name="pwd" type="string">
  <cfquery name="getdata" datasource="#application.db#">
    select * from users2 where username = '#arguments.uname#' and password = '#arguments.pwd#'
  </cfquery>
  <cfreturn getdata>
</cffunction>

对我来说,似乎没有定义变量FORM.login!? 尝试:

如果没有看到hello,则未定义FORM.login

还可以尝试:

<cfdump var="#form#" abort>
查看表单范围中定义的内容

还有其他人怎么说,使用cfqueryparam!!保安

<cfquery name="getdata" datasource="#application.db#">
    select * 
    from users2 
    where username = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.uname#">
    and password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.pwd#">
</cfquery>

转储getdata查询时,这些字段会看到什么?另外,与您的问题无关,但查询参数是您的freinds。我在主页上将cfparam将所有变量设置为默认值0。当我转储var1时,var2、var3和var4都是0。superadmin是唯一设置为1的。在我的数据库中,用户的所有权限都设置为1。我从来没有使用过像Dan inquires这样的CfQueryParam,在cflock和截图之前做一个,然后粘贴到这里。这与您的实际问题无关,但是您的getLogin方法最好使用远程访问类型。您希望将其设置为public以限制对它的访问,除非您明确指出要使其直接可访问的内容对您的应用程序是可访问的,remote对世界是可访问的,并且正如其他人所说的那样使用cfqueryparam:将cflocation更改为转到转储会话范围的页面如何?也许一行或两行你的cfparam,很难找出它在这里的位置。
<cfquery name="getdata" datasource="#application.db#">
    select * 
    from users2 
    where username = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.uname#">
    and password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.pwd#">
</cfquery>