2010-06-17 36 views

Trả lời

10

<cfscript> tương đương với <cfcookie> chỉ cung cấp chuyển trực tiếp các biến chỉ dành cho bộ nhớ phạm vi Cookie. Bạn không thể sử dụng gán trực tiếp để đặt cookie liên tục được lưu trữ trên hệ thống người dùng. Vì vậy, bạn sẽ phải viết một hàm bao bọc, nếu bạn muốn đặt cookie vĩnh viễn bằng cách sử dụng tập lệnh CFML duy nhất.

+0

yeah, nhờ ... mà những gì tôi đã suy nghĩ và đã làm. – noobsaibot

8

Tôi đã viết UDF này. Lưu ý rằng nó httpOnly là CF9 chỉ vì vậy bạn sẽ muốn loại bỏ nó dưới 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 không có CFCookie cfscript tương đương, nhưng nếu bạn muốn sử dụng CFFUNCTION, bạn vẫn có thể làm điều đó trong Ngoài việc thêm HttpOnly hỗ trợ cho CF6, 7, 8 & 9. Bạn sẽ có thể tạo ra một UDF, nhưng nó chỉ sẽ không được ở định dạng CFSCRIPT

có một writeup tốt về làm thế nào để làm điều đó ở đây (với mã nguồn) (không mất mát lớn.): http://www.modernsignal.com/coldfusionhttponlycookie (I don' t biết tại sao điều này chưa có tại CFLib.org.)

Một vấn đề mà tôi gặp phải lần đầu tiên việc tạo cookie bằng CFHEADER là nó cho phép tên hỗn hợp và ColdFusion chỉ có khả năng đọc, cập nhật & xóa cookie bằng tên viết hoa.

Để kiểm tra/cookies xem xét trong Firefox và kiểm tra ngày hết hạn (hoặc HttpOnly thiết), cài đặt tiện ích Firecookie Firebug: http://www.softwareishard.com/blog/firecookie/

Các vấn đề liên quan