2014-09-08 7 views
1

변경할 수없는 데이터 저장소가 있다고 가정 해 보겠습니다. 값이 모두 HTML 엔티티를 포함 할 수ColdFusion에서 HTML 엔터티를 변환하지 못하게하려면 어떻게해야합니까?

  • BROWN
  • BLUE & RED
  • YELLOW & PURPLE
  • BLACK

참고 : 데이터 저장소 내에서

나는 문자열 값의 테이블이 및 그들의 coutnerparts (ie &&).

이제 이러한 값을 입력 값 (체크 박스)으로 출력하고 싶습니다.

조작하지 않으면 ColdFusion에서 &&으로 변환합니다. 해당 확인란을 선택하고 데이터 저장소에 대해 유효성을 검사하면 YELLOW & PURPLE (데이터 저장소 값)이 YELLOW & PURPLE (양식 값)과 같지 않으므로 실패합니다.

<cfquery name="LOCAL.qColors"> 
    SELECT 
     COLOR 
    FROM COLORS 
</cfquery> 

<cfoutput query="LOCAL.qColors"> 
    <div> 
    <input 
     id="color-#CURRENTROW#" 
     type="checkbox" 
     class="checkbox" 
     name="colors" 
     value="#COLOR#" 
     #IIF(ListFindNoCase(FORM.colors, COLOR), "'checked'", "")# /> 
    <label for="color-#CURRENTROW#"> 
     #COLOR# 
    </label> 
    </div> 
</cfoutput> 

가 어떻게이 HTML 엔티티를 디코딩하고 그냥 내가 원하는 정확한 문자열을 사용하여 ColdFusion에서 방지 할 수 있습니다 : 여기

내가 출력의 체크 박스를 사용하고 현재 [의사] 코드?

+3

제출 된 양식을 처리하는 코드와 함께요소를 렌더링하는 코드를 게시하십시오 – Dai

+1

" 조작이 없으면 ColdFusion에서 [...]을 변환합니다.이 코드를 제공 할 수 있습니까? 건배. –

+0

이 데이터 저장소의 특성은 무엇입니까? 데이터베이스 테이블입니까? 그렇다면 체크 박스 값에 더 적합한 다른 필드가 있습니까? –

답변

2

ColdFusion과는 아무런 관련이 없습니다. 실제로 페이지의 HTML 소스에있는 HTML 엔터티를 브라우저에서 올바르게 해석합니다. 브라우저에서 HTML로 구문 분석하지 않으려는 문자열이 있으면 이스케이프 처리해야합니다. 값을 출력 할 때 HTMLEditFormat() 함수를 사용하십시오.

값에 큰 따옴표가 포함 된 경우 특히 중요 할 수 있습니다. 그리고 일반적인 예방 조치로, NEVER은 웹 페이지에 노출되지 않은 (이스케이프 처리되지 않은) 텍스트를 디스플레이 문제와 보안 문제에 대해 안전한 파싱 가능 HTML로 예상하지 않는 출력을 웹 페이지에 출력합니다.

ColdFusion에서 9 낮은

#HTMLEditFormat(arbitraryValue)# 
<input name="myOptions" type="checkbox" value="#HTMLEditFormat(arbitraryValue)#">

ColdFusion에서 10 +

#encodeForHTML(arbitraryValue)# 
<input name="myOptions" type="checkbox" value="#encodeForHTMLAttribute(arbitraryValue)#">
그런 다음 " BLUE & RED는" "가되는 페이지의 HTML 소스에 볼 수

BLUE & amp; RED "및"노란색 & amp; PURPLE "는"YELLOW & amp; amp; PUBLE ". 해당 HTML을 구문 분석 할 때 원래 값이 사용되어 양식에 의해 제출됩니다.

+1

올바른 생각, 잘못된 세부 사항. htmledit 형식을 value 속성에 적용하지 않으면 사용자에게 표시되는 텍스트에 적용됩니다. –

+0

실제로 충돌하는 문자를 보완하기 위해 값 속성과 디스플레이에 적용하려고합니다. 그것을 보는 또 다른 방법은 데이터에 기호보다 크거나 작은 기호가 있거나 심지어 따옴표가있는 경우 형식이없는 값에 삽입 된 경우 페이지가 잘못 렌더링됩니다. 또한 입력 끝 값 속성에 넣을 때 CF가 DB 값을 변경하도록하는 실제 코드를보고 싶지만 처리 끝 부분에서도 비교할 때 루트 문제를 처리 할 수 ​​있습니다. – Snipe656

+2

Dan, 절대적으로 value 속성을 벗어납니다. 특히이 시나리오에서는 브라우저가 구문 분석 할 수없는 HTML이 포함되어 있습니다. 나는 또한 당신이 라벨의 텍스트 (또는 그 밖의 다른 것들)를 벗어날 것이지만, 내 코드 샘플에 라벨이 포함되어 있지 않기 때문에 동의한다. 레이블과 입력 값에서 이스케이프 된 값을 표시하도록 코드를 업데이트했습니다. –