Я бы порекомендовал что-то похожее на то, что предлагал @Ben Doom;хотя и не хранится в объеме сеанса.Вместо этого я бы рекомендовал использовать область применения.Нет причин заставлять каждый сеанс пользователя повторять одну и ту же информацию снова и снова.
Вы можете получить 2 разных «приложения» (в основном просто разные адресные пространства), работающих из одной и той же кодовой базы, дав им разные имена приложений.Как предлагает Бен, я бы основывал имя приложения на переменной CGI.Использование хэша гарантирует, что значение будет безопасно использовать в качестве имени приложения, но его будет не так просто включить.
Application.cfc:
component {
this.name = hash(cgi.server_name);
}
Не все переменные CGI безопасны - некоторые могут быть изменены пользователем (реферер, ip и т. Д.), Поэтому, если вы собираетесь использовать одну из них, я рекомендую сделать что-то вроде хеширования, так каксделано выше, чтобы убедиться, что здесь можно безопасно использовать ... Но если вы используете одно из безопасных значений (например, cgi.server_name), тогда вы должны безопасно использовать его без хеширования и т. д.
В этом случае, было бы намного проще настроить тему дисплея для включения запущенного приложения:
Application.cfc:
component {
this.name = cgi.server_name;
}
index.cfm:
<cfimport prefix="custom" taglib="#expandPath('./layouts')#" />
<custom:layout theme="#application.applicationname#">
<!--- your content here --->
</custom:layout>
layouts / layout.cfm:
<cfparam name="attributes.theme" default="www.site1.com" />
<cfif attributes.theme eq "www.site1.com">
<!--- include content for this theme --->
<cfelse>
<!--- include content for this theme --->
</cfif>
(протестировано на Win7 / IIS7)