Мне нужно видеть всю область сеанса для всех зарегистрированных пользователей в ColdFusion2018

#ajax #session #struct #coldfusion #cfml

#ajax #сессия #структура #coldfusion #cfml

Вопрос:

Я начинаю с этой находки;

 <cfscript>
    app = application.getApplicationSettings().name;
    sessionCollection = application.sessionTracker.getSessionCollection(app);
</cfscript>
  

а затем попытаться выполнить цикл через коллекцию;

 <cfloop collection="#sessionCollection#" item="i">
    #StructFind(i, 'CurrentAction')#
</cfloop>
  

что приводит к сбою с;
Вы попытались разыменовать скалярную переменную типа класса java.lang.Строка как структура с элементами.

Я пытался

 #CurrentAction[i]#
  

что приводит к сбою с;
Переменная CURRENTACTION не определена.

когда я точно знаю, что он существует (https://ibb.co/ZJwsKFS)

Я также пробовал точечную нотацию.

Цель состоит в том, чтобы идентифицировать активность прослушивателя ajax для одного пользователя и повлиять на действие другого конкретного пользователя в качестве ответа. У меня сложилось впечатление, что я могу отправить действие конечным пользователем SessionID. Пожалуйста, не стесняйтесь, дайте мне знать, если это невозможно.

Ответ №1:

Итак, этот код:

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

<cfoutput>
    <cfloop collection="#x#" item="i">
        <li>#i#</li>
    </cfloop>
</cfoutput>
  

Выводит следующее:

  • A
  • B
  • C

Что означает, что i это ключ структуры, определенный в collection атрибуте. Ваш код пытается найти ключ в коллекции (struct), но вы ссылаетесь не на ту переменную.

Чтобы найти значение B , вы должны сделать StructFind(x, "b") . cfloop Вам тоже не нужно, вам просто нужно проверить, существует ли ключ, а затем получить значение.

 <cfset someVariable = "">
<cfif structKeyExists(x, "b")>
    <cfset someVariable = structFind(x, "b")>
</cfif>