2010-06-17 47 views

回答

10

<cfscript>等效於<cfcookie>僅提供直接分配Cookie範圍內存變量。您不能使用直接分配來設置存儲在用戶系統上的持久性cookie。所以如果你想使用腳本CFML設置永久cookie,你將不得不編寫一個包裝函數。

+0

是啊,謝謝...什麼我想過和已經做了。 – noobsaibot 2010-06-17 09:32:00

8

我寫了這個UDF。注意它只有CFO,所以你想在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,你仍然可以做到這一點,除了爲CF6,7加中HTTPOnly支持,8 & 9.你會能夠創建一個UDF,但它只是不會在CFSCRIPT格式

有關於如何在這裏做它(源代碼)良好的書面記錄(沒有什麼大的損失。): http://www.modernsignal.com/coldfusionhttponlycookie (我不不知道爲什麼這在CFLib.org還沒有。)

我最初遇到的一個問題使用CFHEADER創建cookie的原因是它允許混合大小寫的名稱,並且ColdFusion只能讀取,更新刪除大寫字母的cookie。

要測試/審查cookies在Firefox和確認截止日期(或中HTTPOnly設置),安裝FireCookie Firebug擴展: http://www.softwareishard.com/blog/firecookie/

相關問題