coldfusioncffunction

In ColdFusion, what is the difference between setting a function to a variable and calling a function in hashtags?


I wrote the following function:

  <cffunction name="check_session_valid" returntype="boolean">
    <cfif NOT StructKeyExists(session,"username") OR (len(session.username) EQ 0)>
     <script>location.href = 'logout.cfm'</script>
     <cfabort>
    </cfif>
    <cfset session.myApp_start = now()>  
    <cfreturn true>
  </cffunction>

In my .cfm page, I can call that function using

<cfset session_valid = application.lib.check_session_valid()>

OR

#application.lib.check_session_valid()#

What's the difference? Best practice?


Solution

  • Since you asked about best practice, which is a matter of opinion, I think you can improve your function by having it returning either true or false depending on whether or not session.username exists and has a length greater than 0. Then you can use it like this:

    <cfif application.lib.check_session_valid()>
    code for this condition
    <cfelse>
    <cflocation href = "logout.cfm">  
    <!--- note that cfabort is not necessary --->
    <cfif>
    

    Regarding your specific question, I think the extra variable, session_valid, is a waste of typing. However, that is simply my opinion.

    Not related to your question, I found it curious that you would direct users to a page called logout.cfm. Often users are directed to a page that allows them to log in.