2015-04-27 2 views
0

У меня есть несколько переменных сеанса, мне нужна настройка для разрешений, и только переменные userID, userName и sessionAdmin проделывают это. Я делаю cfdump и вижу, что все переменные установлены в 0, что является значением cfparam по умолчанию. Я также не могу заставить страницу перенаправить на мой примерный адрес.Переменные сеанса ColdFusion не установлены правильно

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> 
+4

Что вы видите для этих полей, когда вы даете запрос getdata? Кроме того, не связанные с вашим вопросом, но параметры запроса - ваши друзья. –

+0

У меня есть cfparam, устанавливающий все переменные по умолчанию 0 на главной странице. Когда я дамлю var1, var2, var3 и var4 - все 0. superadmin является единственным, для которого установлено 1. В моей базе данных у пользователя есть все разрешения, установленные равными 1. Я никогда не использовал cfqueryparam – bWF800

+0

Как и в случае с запросом Дэна, 'непосредственно перед cflock и скриншотом и вставьте его здесь. –

ответ

0

Для меня это выглядит как переменная FORM.login не определен !? попробовать:

<cfif isDefined("FORM.login")> 
    <cfdump var="hello"> 
    <cfabort> 
    .... 

, если вы не видите "привет", 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>