Можно ли определить переменную сеанса, используя другую переменную в качестве имени переменной сеанса? Я не нашел ничего об этой ситуации при исследовании того, как определить переменную сеанса.Могу ли я использовать переменную в качестве имени переменной при определении переменной сеанса?
Я новичок пользователя CFML, и вот ситуация, которую я пытаюсь настроить. Надеюсь, это не слишком многословно и сбивает с толку.
У меня есть код на каждой странице, который снимает мне уведомление по электронной почте, когда данный пользователь сайта обращается к определенной странице во время сеанса пользователя. Работает отлично. Но я хочу, чтобы это сообщение электронной почты вызывало только времени, когда пользователь обращается к странице - мне не нужны дополнительные посещения страниц этой страницей этим пользователем во время сеанса этого пользователя.
Мне нужно определить переменную сеанса, уникальную для комбинации «этот пользователь/эта страница». Всякий раз, когда любой пользователь обращается к этой странице, я ищу эту переменную. Если есть совпадение, это означает, что пользователь уже посетил эту страницу во время этого сеанса пользователя, и я не запускаю оповещение по электронной почте.
Для части «этого пользователя» я уже определил переменную сеанса для пользователя, когда пользователь вошел в систему (Session.Name).
Для «что страница», то я уже однозначно определяют переменную в верхней части каждой страницы - например
<cfset page_filename = 'index.cfm'>
Conundrum: Как совместить обе части (имя и page_filename) в одной уникальной сессии переменная, когда одна из двух частей (page_filename) сама является переменной.
До сих пор, я попытался определение «Session.page_alert» с помощью page_filename с session.name
<cfset Session.page_alert = '#page_filename##Session.Name#'>
Но это становится бесполезным, как только посещения пользователей другой страницы, так как # page_filename # части отличается от каждой страницы, поэтому уникальная переменная сеанса относится к странице , а не к , предшествующей странице. Если пользователь возвращается к предыдущей странице, переменная Session больше не ссылается на нее, поэтому она выглядит так, как будто пользователь снова посещает эту первую страницу, даже когда пользователь уже был там.
В идеале я хотел бы сделать что-то вроде
<cfset Session.#page_filename# = '#page_filename##Session.Name#'>
- это будет уникальная комбинация, которая будет сохраняться в течение сеанса пользователя. Но, CFML barfs, когда я это делаю, вероятно потому, что я определяю переменную сессии как переменную. Не хватает ли я очевидного решения того, что я хочу сделать? Надеюсь, это не слишком смущает. Большое вам спасибо за любую помощь, которую вы можете предоставить!
======================================================================================================================== ================= `
<!--- username variable Session.Name is defined upon user login --->
<!--- do a test display for existence of this variable --->
<cfoutput>
<p>SESSION.NAME = #Session.Name#
</cfoutput>
<!--- this part works fine --->
<!--- define page_filename local variable at top of each page --->
<cfset page_filename = 'index.cfm'><!--- example for one page --->
<!--- do a test display for existence of this variable --->
<cfoutput>
<p>PAGE_FILENAME = #page_filename#
</cfoutput>
<!--- this part works fine --->
<!--- attempt to define session variable using the page_filename variable defined above --->
<cfset Session[page_filename] = '#page_filename##Session.Name#'>
<!--- test display after attempt to define session variable --->
<cfoutput>
<p>SESSION.PAGE_FILENAME = #Session.page_filename#
</cfoutput>
<!--- this produces a CF error msg stating that "page_filename is undefined in Session" --->`
Можно есть более простые способы подойти к этому с помощью onRequestStart в Application.cfc * RE: когда пользователь данного сайта обращается к определенной странице во время сеанса пользователя * Одна конкретная страница или все страницы? Если это последнее, мне интересно узнать о вашем случае использования ... – Leigh