我需要在 ColdFusion2018 中查看所有登录用户的所有会话范围

Big*_*ear 2 ajax coldfusion session struct cfml

我从这个发现开始;

<cfscript>
    app = application.getApplicationSettings().name;
    sessionCollection = application.sessionTracker.getSessionCollection(app);
</cfscript>
Run Code Online (Sandbox Code Playgroud)

然后尝试遍历集合;

<cfloop collection="#sessionCollection#" item="i">
    #StructFind(i, 'CurrentAction')#
</cfloop>
Run Code Online (Sandbox Code Playgroud)

失败了; 您试图将 java.lang.String 类型的标量变量解引用为具有成员的结构。

我试过了

#CurrentAction[i]#
Run Code Online (Sandbox Code Playgroud)

失败了; 变量 CURRENTACTION 未定义。

当我知道它存在的事实时(https://ibb.co/ZJwsKFS

我也试过点表示法。

目的是为一个用户识别 ajax 侦听器活动,并影响另一个特定用户的操作作为响应。我的印象是我可以通过 sessionID 最终用户发送操作。如果这是不可能的,请随时告诉我。

Adr*_*eno 5

所以这段代码:

<cfset x = {
    a = 1
    , b = 2
    , c = 3
}>

<cfoutput>
    <cfloop collection="#x#" item="i">
        <li>#i#</li>
    </cfloop>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

  • 一种
  • C

这意味着这icollection属性中定义的结构的键。您的代码试图在集合 (struct) 中找到一个键,但您引用了错误的变量。

要找到 的值B,您会这样做StructFind(x, "b")。你也不需要cfloop,你只需要检查键是否存在,然后获取值。

<cfset someVariable = "">
<cfif structKeyExists(x, "b")>
    <cfset someVariable = structFind(x, "b")>
</cfif>
Run Code Online (Sandbox Code Playgroud)