IMHO, I'd do two things...
Numba 1: Use structures instead of arrays. Structures will provide you with
a much more logical way of working user data. Fer instance... You have
<CFSET Session.UserInfo[1] = "#return_db_fields#">
<CFSET Session.UserInfo[2] = "#return_db_fields1#">
<CFSET Session.UserInfo[3] = "#return_db_fields2#">
<CFSET Session.UserInfo[4] =
"#qryFnameLnameEmail.FirstName#">
<CFSET Session.UserInfo[5] =
"#qryFnameLnameEmail.LastName#">
<CFSET Session.UserInfo[6] = "#qryFnameLnameEmail.Email#">
<CFSET Session.UserInfo[7] = "#qryFnameLnameEmail.Username#">
With structures, you could say
<CFSCRIPT>
Session.UserInfo=StructNew();
StructInsert(Session.UserInfo, "return_db_fields",
"#return_db_fields#");
StructInsert(Session.UserInfo, "return_db_fields1",
"#return_db_fields1#");
StructInsert(Session.UserInfo, "return_db_fields2",
"#return_db_fields2#");
StructInsert(Session.UserInfo, "FirstName", "#FirstName#");
StructInsert(Session.UserInfo, "LastName", "#LastName#");
StructInsert(Session.UserInfo, "Email"", "#Email#");
StructInsert(Session.UserInfo, "Username", "#Username#");
</CFSCRIPT>
Okay, now to go full hog-wild... Numba 2.
I converted many of my apps from using session variables over to using
client variables that reside in a database instead of the Registry. Why?
Well, one good reason is cuz' you can query the database to see the exact
contents of a client variable, so you can tell the state of a variable
instantly. This makes debugging SoOoOo much easier. You won't have to do as
much guessing about the state of stuff like "is this array initialized?".
You can just look in the database and see for yourself.
Details are available from a few sources...
Marc Funaro has a great article in the June 2000 CFDJ on this topic.
I've also got an instruction sheet on passing complex variables (structures,
arrays) into database-driven client variables by using WDDX, you can see it
at http://www.anthc.org/skunkworks.
Yeah yeah I'm talking about a major re-engineering of how your app is put
together. But I do believe the time invested would pay off fast. Once you
get hooked on looking in the database right at the variables, hey, you'll
wonder why you waited so long.
Had to throw in my 32 cents worth here...
Alan McCollough
Web Programmer
Alaska Native Medical Center
> -----Original Message-----
> From: CM Randall [SMTP:[EMAIL PROTECTED]]
> Sent: Wednesday, July 05, 2000 4:24 PM
> To: [EMAIL PROTECTED]
> Subject: CFCACHE and checking for session.MyArray[2]
>
> I'm caching a page using CFCACHE, but in order to view the page the user
> has
> to have access. In the application page I have it check if the user is
> logged in, if not then I send them to the login page.
>
> Application.cfm
> <cfif NOT IsDefined("Session.UserInfo")>
> <cfif cgi.PATH_INFO contains "AlertArchive">
> <cflocation url="Login/Login.cfm" addtoken="No">
> </cfif>
> </cfif>
>
>
> Once they are logged in I set an Array of their information and I put that
>
> into a session.
>
> login.cfm
> <CFSET Session.UserInfo = ArrayNew(1)>
> <CFSET Session.UserInfo[1] = "#return_db_fields#">
> <CFSET Session.UserInfo[2] = "#return_db_fields1#">
> <CFSET Session.UserInfo[3] = "#return_db_fields2#">
> <CFSET Session.UserInfo[4] = "#qryFnameLnameEmail.FirstName#">
> <CFSET Session.UserInfo[5] = "#qryFnameLnameEmail.LastName#">
> <CFSET Session.UserInfo[6] = "#qryFnameLnameEmail.Email#">
> <CFSET Session.UserInfo[7] = "#qryFnameLnameEmail.Username#">
>
>
> On the page I am caching, at the top I check to see is session.MyArray[2]
> is
> valid. It seems to be looping back because the session is valid but then
> throws an error.
>
> Caching page
> <cfif Session.UserInfo[2] LTE "1">
> Sorry you don't have access
> <cfabort>
> </cfif>
>
> That doesn't work! The value of the user I was test was 2, so it I did
> this
> Session.UserInfo[2] LTE "2" it would work (weird).
>
> So then, I created a page that will determine if the the
> session.MyArray[2]
> is defined, if it is I include the cached pages, otherwise I include a
> page
> that displays no access. This doesn't work either, the server just hangs
> as
> if it is still looking. I entered #session.MyArray[2]# with no CFOUTPUT
> and
> did find it diplayed twice.
>
> Page to determine if they have access:
> <cfif IsDefined("Session.UserInfo")>
> <cfinclude template="Module/Module.cfm">
> <cfelse>
> <cfinclude template="NoAccess.cfm">
> </cfif>
>
> Any idea why this is not working?
>
> All I want to do is have them login, and if they have the correct access
> number let them view the cached page.
>
> Thanks,
> RM
>
>
>
>
> ________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
>
> --------------------------------------------------------------------------
> ----
> To Unsubscribe visit
> http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or
> send a message to [EMAIL PROTECTED] with 'unsubscribe' in
> the body.
------------------------------------------------------------------------------
To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/fusebox or send a
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.