2010-06-17 4 views

답변

10

<cfscript><cfcookie>과 동일하며 쿠키 범위 메모리 전용 변수를 직접 할당합니다. 직접 할당을 사용하여 사용자 시스템에 저장된 영구 쿠키를 설정할 수 없습니다. 따라서 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의를 사용하려는 경우, 당신은 여전히 ​​8 & 9. 당신은거야, CF6, 7에 대한 추가 Http 만 지원뿐만 아니라 그것을 할 수 있습니다 UDF를 만들 수 있지만, 그것은 단지 CFScript의 형식으로하지 않습니다

는 (소스 코드) 여기를 수행하는 방법에 대한 좋은 작성자있다 (더 큰 손실.) : 는 http://www.modernsignal.com/coldfusionhttponlycookie (내가 돈 ' CFLib.org에서 아직이 기능을 사용할 수없는 이유를 알고 있습니다.)

내가 처음 만났던 한 가지 문제 CFHEADER를 사용하여 쿠키를 만드는 것은 대소 문자가 혼합 된 이름을 허용하고 ColdFusion은 대문자로 쿠키를 삭제하는 & 만 업데이트 할 수 있다는 것입니다.

설치 (또는 Http 만 설정)을 FireCookie 방화범 확장을 Firefox에서/리뷰 쿠키를 테스트하고 유효 기간을 확인하려면 다음 http://www.softwareishard.com/blog/firecookie/

관련 문제