2010-06-17 5 views

ответ

10

<cfscript> эквивалент <cfcookie> предлагает только прямое перечисление переменных памяти только для печенья. Вы не можете использовать прямое назначение для установки постоянных файлов cookie, которые хранятся в пользовательской системе. Поэтому вам придется написать функцию-оболочку, если вы хотите установить постоянные файлы cookie, используя только скрипт CFML.

+0

да, спасибо ... что то, что я думал и уже сделал. – noobsaibot

8

Я написал этот UDF. Обратите внимание, что httpOnly является только CF9, поэтому вы хотите удалить его под CF8.

<cffunction name="setCookie" access="public" returnType="void" output="false"> 
<cfargument name="name" type="string" required="true"> 
<cfargument name="value" type="string" required="false"> 
<cfargument name="expires" type="any" required="false"> 
<cfargument name="domain" type="string" required="false"> 
<cfargument name="httpOnly" type="boolean" required="false"> 
<cfargument name="path" type="string" required="false"> 
<cfargument name="secure" type="boolean" required="false"> 
<cfset var args = {}> 
<cfset var arg = ""> 
<cfloop item="arg" collection="#arguments#"> 
    <cfif not isNull(arguments[arg])> 
     <cfset args[arg] = arguments[arg]> 
    </cfif> 
</cfloop> 

<cfcookie attributecollection="#args#"> 
</cffunction> 

<cfscript> 
    if(!structKeyExists(cookie, "hitcount")) setCookie("hitcount",0); 
    setCookie("hitcount", ++cookie.hitcount); 
    setCookie("foreverknight",createUUID(),"never"); 
</cfscript> 

<cfdump var="#cookie#"> 
2

CF9.0.1 не имеет CFCookie cfscript эквивалент, но если вы хотите использовать CFFUNCTION, вы можете сделать это в дополнение к добавлению HTTPOnly поддержки CF6, 7, 8 & 9. Вы будете быть в состоянии создать UDF, но он просто не будет в формате CFSCRIPT

Там хорошая рецензия о том, как сделать это здесь (с исходным кодом) (без больших потерь.): http://www.modernsignal.com/coldfusionhttponlycookie (я не» t знать, почему это еще не доступно на CFLib.org.)

Одна проблема, с которой я столкнулся первоначально создание файлов cookie с использованием CFHEADER состояло в том, что он допускал имена смешанных имен, а ColdFusion способен только читать, обновляя & удаление файлов cookie с именами верхнего регистра.

Для проверки/обзора куков в Firefox и проверьте дату истечения срока действия (или HTTPOnly установки), установите расширение Firecookie Firebug: http://www.softwareishard.com/blog/firecookie/

Смежные вопросы