ColdFusion会话检查代码优化求助:完善存在性与有效值校验
完善后的ColdFusion会话校验代码
以下是满足需求的完善代码,解决了会话未定义检查和值的多条件校验问题:
<cfset lstofSessionsToCheck = 'EmplyID,Username'> <cfset requiredSessions = listToArray(lstofSessionsToCheck)> <cfset redirection = false> <!--- 遍历需要校验的会话变量列表 ---> <cfloop array="#requiredSessions#" item="sessionKey"> <!--- 检查会话变量是否未定义,或值为空、0、-1 ---> <cfif NOT structKeyExists(session, sessionKey) OR trim(session[sessionKey]) IS "" OR session[sessionKey] IS 0 OR session[sessionKey] IS -1> <cfset redirection = true> <cfbreak><!--- 只要有一个不满足就终止循环,无需继续检查 ---> </cfif> </cfloop> <!--- 如果需要重定向,执行跳转 ---> <cfif redirection> <!--- 替换为你的实际重定向URL ---> <cflocation url="/login.cfm" addtoken="false"> </cfif>
关键改进说明:
- 用
structKeyExists(session, sessionKey)检查会话变量是否已定义,避免直接访问未定义变量触发报错 - 遍历拆分后的会话键数组,避免硬编码键名,后续新增校验项只需修改
lstofSessionsToCheck即可 - 扩展校验条件:同时覆盖空字符串(含空白字符)、0、-1三种不符合要求的情况
- 一旦发现不符合条件的会话,立即终止循环并标记重定向,提升执行效率
- 补充实际重定向逻辑,完善初始代码缺失的跳转步骤
初始代码中收集session到st对象的部分如果没有后续业务需求,可以直接移除,简化代码结构。
内容的提问来源于stack exchange,提问作者Rodney
相关产品推荐
相关产品推荐

